Мой CvVideoCamera
автоматически вращается, и я бы хотел, чтобы это не было. Это было поднято в bugtracker, но на какое-то время активности не было.
Как заставить CvVideoCamera автоматически не вращаться?
Ответ 1
Подкласс CvVideoCamera
и просто удалите код вращения. Я хотел, чтобы моя ориентация всегда была портретом, так что это было просто:
MyCvVideoCamera.h
#import <opencv2/highgui/cap_ios.h>
@interface MyCvVideoCamera : CvVideoCamera
- (void)updateOrientation;
- (void)layoutPreviewLayer;
@property (nonatomic, retain) CALayer *customPreviewLayer;
@end
MyCvVideoCamera.m
#import "MyCvVideoCamera.h"
@implementation MyCvVideoCamera
- (void)updateOrientation;
{
// nop
}
- (void)layoutPreviewLayer;
{
if (self.parentView != nil) {
CALayer* layer = self.customPreviewLayer;
CGRect bounds = self.customPreviewLayer.bounds;
layer.position = CGPointMake(self.parentView.frame.size.width/2., self.parentView.frame.size.height/2.);
layer.bounds = bounds;
}
}
@end
Ответ 2
Чтобы заставить его работать, мне пришлось добавить:
@protocol CvVideoCameraDelegateMod <CvVideoCameraDelegate>
@end
в MyCvVideoCamera.h, описанном выше
и
@synthesize customPreviewLayer = _customPreviewLayer;
в MyCvVideoCamera.m
Ответ 3
Быстрое исправление Перед инициализацией CVVideoCamera добавьте эти строки
NSNumber * value = [Номер NSNumberWithInt: UIInterfaceOrientationPortrait]; [[UIDevice currentDevice] setValue: значение дляKey: @ "orientation" ];
self.videoCamera = [[CvVideoCamera alloc] initWithParentView: self.previewImage]; self.videoCamera.delegate = self;