我正在使用openCV进行一些实时视频处理。事实上,在进行处理时,屏幕有点不连贯。我想做的仍然是像往常一样通过CvVideoCameraDelegate方法处理图像,但是向用户显示捕获会话视频输出,应该不那么不连贯。
我在委托回调方法中进行所有视频处理
- (void)processImage:(Mat&)image;
因此,当我加载视图时,我尝试将其设置为捕获会话正在输出的内容。看起来您可以像这样访问CVVideoCamera的捕获会话:
AVCaptureSession *session = videoCamera.captureSession;
那么,我在我的布局文件中有一个视图,我想将它连接到名为baseView的视图。我试着这样做:
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session];
CGRect screenRect = baseView.bounds;
previewLayer.frame = screenRect; // Assume you want the preview layer to fill the view.
[baseView.layer addSublayer:previewLayer];
然而,这不起作用。只是一个纯白色的屏幕。我可以说,视频处理仍在后台进行,但无论如何都没有输出视频。
编辑:请注意,我之前没有设置额外的捕获会话,因为我试图限制CPU任务
答案 0 :(得分:1)
好的我明白了:
我尝试输入
BOOL loaded = videoCamera.captureSessionLoaded;
事实证明相机没有满载。事实上,在你开始捕捉之前它不会完全加载(显然我猜?)
所以,只要我将代码放在
之下[self.videoCamera start];
一切似乎都按预期工作