我正在使用 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 任务