簡體   English   中英

iOS使用openCV檢測來自攝像頭的矩形

[英]iOS detect rectangles from camera with openCV

我正在嘗試使用openCV用iPhone相機檢測名片的邊緣(並繪制它們)。 我是這個框架的新手,以及計算機視覺或C ++。

我正在嘗試使用此處解釋的解決方案: https//stackoverflow.com/a/14123682/3708095 ,其中github項目是https://github.com/foundry/OpenCVSquares

它適用於預定義的圖像,但我正在嘗試使用相機。

為此,我正在使用CvVideoCameraDelegate protocolCVViewController.mm實現它,就像他們在http://docs.opencv.org/doc/tutorials/ios/video_processing/video_processing.html中解釋一樣:

#ifdef __cplusplus
-(void)processImage:(cv::Mat &)matImage
{
//NSLog (@"Processing Image");
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    matImage = CVSquares::detectedSquaresInImage(matImage, self.tolerance, self.threshold, self.levels, [self accuracy]);

    UIImage *image = [[UIImage alloc]initWithCVMat:matImage orientation:UIImageOrientationDown];

    dispatch_async(dispatch_get_main_queue(), ^{
        self.imageView.image = image;
    });
});

}
#endif

編輯:

如果我這樣做,它給了我一個EXC_BAD_ACCESS ...

如果我在處理它之前克隆matImage,通過記錄它,它似乎處理圖像甚至找到矩形,但矩形不會被繪制到圖像輸出到imageView。

cv::Mat temp = matImage.clone();    

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    UIImage *image = [[UIImage alloc]CVSquares::detectedSquaresInImage(temp, self.tolerance, self.threshold, self.levels, [self accuracy])
                                       orientation:UIImageOrientationDown];

    dispatch_async(dispatch_get_main_queue(), ^{
        self.imageView.image = image;
    });
});

我很確定我錯過了一些東西,可能是因為我沒有正確傳遞某個對象,指向對象的指針等等,而我需要修改的對象則沒有。

無論如何,如果這不是正確的方法,我真的很感謝他們做這樣的事情的教程或例子,使用openCV或GPUImage (也不熟悉它)......

所以解決方案實際上非常簡單......

而不是試圖用matImage設置imageView.image ,它只是需要變換matImage在ImageView的實際修改,因為CvVideoCamera已經與初始化(和鏈接)的ImageView的:

self.videoCamera = [[CvVideoCamera alloc]initWithParentView:self.imageView];

最后這個功能是這樣的:

#ifdef __cplusplus
-(void)processImage:(cv::Mat &)matImage
{
    matImage = CVSquares::detectedSquaresInImage(matImage, self.angleTolerance, self.threshold, self.levels, self.accuracy);
}
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM