Как заставить CvVideoCamera автоматически не вращаться?

Мой CvVideoCamera автоматически вращается, и я бы хотел, чтобы это не было. Это было поднято в bugtracker, но на какое-то время активности не было.

Ответ 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;