-2
在這個doc中,OpenCV爲cap_ios.h
定義了一個代理方法用於視頻處理。聲明是這樣的:在一定條件之後重新啓動代理方法
@class CvVideoCamera;
@protocol CvVideoCameraDelegate <NSObject>
#ifdef __cplusplus
// delegate method for processing image frames
- (void)processImage:(cv::Mat&)image;
#endif
@end
而且,我把我的代碼用於視頻處理功能,裏面的(void)processImage:(cv::Mat&)image;
ViewController.mm
。
在處理OpenCV + C++中的視頻幀時,我用do-while
循環來處理攝像機捕獲的每一幀。在循環中,如果某些條件爲真,則代碼將不會繼續,而是從頭重新開始。代碼如下:
do {
captureAndDoSomething();
if (condition) {
continue; // To capture a new frame
}
doSomething();
} while(...);
所以,我的問題是如何重新啓動iOS中編碼功能(void)processImage:(cv::Mat&)image
?現在沒有循環,我不能再使用continue
了。
- (void)processImage:(cv::Mat&)image {
doSomething(); // Capturing is done by delegate I think
if (condition) {
// How to restart and capture a new frame now?
}
doSomething();
}
完成該功能後發佈通知,以便您得到通知再次調用該功能。 –