我在使用 iOS SDK 将结果显示到 preivewLayer 时遇到问题。在理解如何用处理过的帧“替换”捕获的帧时,我需要你的一些建议。
事实是:我有一个非常标准的 AVCapture 配置应用程序与 OpenCV 框架混合。
-(void)captureOutput... {
// I think that is here where I have to do operations... so
// for example a simple RGB->GRAY...
UIImage* img = [[UIImage alloc] initWithCMSampleBuffer:sampleBuffer];
cv::Mat m_img;
m_img = [img CVMat];
// you can do this using m_img both as a src and dst
cv::cvtColor( m_img, m_img, CV_BGR2GRAY );
img = [[UIImage alloc] initWithCvMat:m_img];
[previewLayer setContent:[img CGImage]];
}
显然这不是那么正确。例如,新内容的大小没有正确调整大小,而捕获的帧是正确的,只是因为我设置了
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspect];
但是“最大”的问题是我处理的图像在捕获的帧后面,视频非常流畅,而我处理的视频(在帧后面)不是那么流畅(即使我什么都不做,直接分配相同的图像) .
你们中的任何人都可以帮助我了解如何将处理后的图像直接应用到 previewLayer(在这种情况下使用 OpenCV)。
非常感谢...