1

我在本机代码中使用 cv::VideoCapture 并且遇到了问题:在 android java 代码中,Videocapture 提供了一个 Yuv420 帧,在本机代码中它是一个 BGR 帧。因为我需要一个灰色图像,所以有一个 Yuv 图像会更好(我读到将 Yuv 转换为灰色是没有成本的)。

这是我的问题:

使用华硕 TF201 的即时通讯,获取一帧大约需要 26 毫秒,这很多......因为标准的 android 相机 API 为 Yuv 提供了本机版本的 VideoCapture 是否执行转换?(这将解释时间成本)

是否可以使用 CV_CAP_PROP_FORMAT 更改格式?每当我尝试 mycapture.get(CV_CAP_PROP_FORMAT) 我的应用程序崩溃...

编辑:安德烈·卡马耶夫回答了这个问题。我必须使用抓取/检索方法在第二个中添加一个参数:

capture.retrieve(frame, CV_CAP_ANDROID_GRAY_FRAME);

谢谢

4

1 回答 1

1

查看适用于 Android 的 OpenCV 示例。他们中的大多数都从一个VideoCapture对象中获取灰色图像:

capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);

在内部,这个灰色图像以最有效的方式从 yuv420 帧“转换” - 即使没有额外的复制。

于 2012-06-07T08:41:36.183 回答