Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS和OpenCV:如何初始化CvVideoCamera对象以反映图像大小?_Ios_Objective C_Opencv_Uiimage - Fatal编程技术网

iOS和OpenCV:如何初始化CvVideoCamera对象以反映图像大小?

iOS和OpenCV:如何初始化CvVideoCamera对象以反映图像大小?,ios,objective-c,opencv,uiimage,Ios,Objective C,Opencv,Uiimage,这是我用来初始化CvVideoCamera馈送到ViewController中UIImage view对象的代码。如何使相机调整到UIImageView的大小 现在,当第一次加载视图时,相机会稍微变小,只有当我旋转屏幕时,相机才会变大 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self

这是我用来初始化CvVideoCamera馈送到ViewController中UIImage view对象的代码。如何使相机调整到UIImageView的大小

现在,当第一次加载视图时,相机会稍微变小,只有当我旋转屏幕时,相机才会变大

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.videoCamera = [[CvVideoCamera alloc] initWithParentView:imageView];
    self.videoCamera.delegate = self;

    self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;
    self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
    self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
    self.videoCamera.defaultFPS = 30;
    self.videoCamera.rotateVideo = true;
    self.videoCamera.grayscaleMode = NO;

我建议您按如下方式初始化相机

    self.videoCamera = [[CvVideoCamera alloc] init];
然后在
processImage:(cv::Mat&)image
方法中,应该使用GCD显式地将图像设置为UIImageView。另外,请确保在使用
cvtColor
转换为UIImage之前将其从BGR转换为RGB,如下所示

    Mat RGB;
    cvtColor(image, RGB, CV_BGR2RGB);
    dispatch_async(dispatch_get_main_queue(), ^{
        self.capturePreview.image = [UIImage UIImageFromCVMat:RGB];
    });
在这种情况下,
self.capturePreview
是UIImageView的一个实例。然后缺少的关键组件是确保在
viewDidLoad()
方法中添加行
self.capturePreview.contentMode=UIViewContentModeScaleAspectFill

UIImageView的默认模式是
UIViewContentModeScaleToFill
,因此,您的图像将被相机有效地捕获并剪裁

希望有帮助