iOS和OpenCV:如何初始化CvVideoCamera对象以反映图像大小?
这是我用来初始化CvVideoCamera馈送到ViewController中UIImage view对象的代码。如何使相机调整到UIImageView的大小 现在,当第一次加载视图时,相机会稍微变小,只有当我旋转屏幕时,相机才会变大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
- (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
,因此,您的图像将被相机有效地捕获并剪裁
希望有帮助