2016-03-07 36 views
1

這是我用來將我的ViewController中的UIImage視圖對象中的CvVideoCamera feed初始化的代碼。我怎樣才能讓相機調整到UIImageView的大小?iOS和OpenCV:如何初始化CvVideoCamera對象以反映UIImage大小?

由於現在相機稍微小一點,當視圖第一次加載時,只有當我旋轉屏幕時纔會變大

- (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; 

回答

0

我建議你按以下步驟初始化相機。

self.videoCamera = [[CvVideoCamera alloc] init]; 

然後在processImage:(cv::Mat &)image方法,你應該像明確使用GCD設置爲的UIImageView。另外,還要確保你從BGR轉換爲使用cvtColor一個UIImage如下

Mat RGB; 
    cvtColor(image, RGB, CV_BGR2RGB); 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     self.capturePreview.image = [UIImage UIImageFromCVMat:RGB]; 
    }); 

在這種情況下,self.capturePreview是UIImageView的實例前,將其轉換爲RGB。關鍵的組件,那麼你缺少的是確保在您的viewDidLoad()方法添加行self.capturePreview.contentMode = UIViewContentModeScaleAspectFill;

爲的UIImageView的默認模式是UIViewContentModeScaleToFill並因此圖像實際上被相機捕捉和剪裁。

希望它有幫助!