我在本机代码中使用cv :: VideoCapture,我遇到了问题: 在android java代码中,Videocapture提供了一个Yuv420帧,在本机代码中它是一个BGR。因为我需要一个灰色图像,所以拥有一个Yuv图像会更好(我读过将Yuv转换为GRAY没有任何成本)。
以下是我的问题:
即时通讯使用华硕TF201,获取一个帧需要大约26毫秒,这是很多...作为标准的Android相机API给予Yuv的原始版本的VideoCapture执行转换? (这可以解释时间成本)
是否可以使用CV_CAP_PROP_FORMAT更改格式?每当我尝试mycapture.get(CV_CAP_PROP_FORMAT)我的应用程序崩溃...
编辑:Andrey Kamaev回答了这个问题。我必须使用抓取/检索方法在第二个中添加一个参数:capture.retrieve(frame, CV_CAP_ANDROID_GRAY_FRAME);
由于
答案 0 :(得分:1)
查看适用于Android的OpenCV示例。他们中的大多数都是从VideoCapture
对象获取灰色图像:
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
在内部,这个灰色图像以最有效的方式从yuv420帧“转换” - 即使没有额外的复制。