【发布时间】:2017-03-25 17:40:09
【问题描述】:
在我的应用程序中,我打开原生 android 相机并在 TextureView 上渲染预览,接下来我要做的是从相机中获取每一帧并使用 OpenCV 库执行一些处理和操作。
我也参考了这里的一些帖子Android decode Bitmap from Camera Preview, how to get RGB values of bitmap in android , How to capture preview image frames from Camera Application in Android Programming?
但我不知道我应该将检索到的帧转换为哪种格式,尤其是我想在 opeCV 中使用它,正如我之前所说,哪种格式产生良好的性能,我应该将它们转换为 YUV、JPEG 还是 NV21?
更新
我想使用原生 android 相机,然后将从相机检索到的帧转换为适用于 openCV 的另一种格式的原因是,当我使用 CvCameraViewListener2 时,相机预览周围总是有一个黑色区域,如下图所示图片,我无法摆脱它,所以我决定改用原生 android 相机
图片:
【问题讨论】:
-
为了获得最佳性能,您应该使用 Camera2 API 和 YUV_420_888 图像格式(与 NV21 相同)。据我所知,OpenCV 可以使用这种格式,也可以轻松转换为 RGB。
-
@MaximMetelskiy 实际上我无法使用 camera2 API,因为我的设备的 sdk 版本是 18 ......你的意思是 opencv 可以直接使用“YUV_420_888”和“NV21”而无需任何高级转换? ?
-
@MaximMetelskiy 如何将 NV21 转换为 RGB?请咨询
-
看这里stackoverflow.com/questions/23122957/…。你确定你需要RGB图像吗?可能只有灰度部分就足够了吗?这样你就可以避免任何对话。
标签: android image-processing bitmap android-camera opencv4android