Ser*_*gio 5 java android opencv
我正在使用Android Camera2 API从相机中获取帧.我可以得到一个ImageReader,它使用acquireLatestImage()方法读取Image对象.
由于我需要处理获取的帧,我必须将每个Image对象转换为Mat对象.我想这是一个很常见的问题,所以我希望找到一个方便的OpenCV方法来做到这一点.但是我没有找到任何.
您是否了解如何使用Android Camera2从相机框架中获取Mat对象?谢谢
小智 4
这取决于您为 ImageReader 类设置的ImageFormat 。下面的代码假设它使用 JPEG 格式。
Image image = reader.acquireLatestImage();
Mat buf = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC1);
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.remaining()];
buffer.get(bytes);
buf.put(0, 0, bytes);
// Do note that Highgui has been replaced by Imgcodecs for OpenCV 3.0 and above
Mat mat = Highgui.imdecode(buf, IMREAD_COLOR);
image.close();
Run Code Online (Sandbox Code Playgroud)
请注意,imdecode 相当慢。我不完全确定,但我认为YUV_420_888转换为 Mat 对象会更快,但我自己还没弄清楚如何做到这一点。我看到这篇文章尝试将 YUV 转换为 Mat,
归档时间: |
|
查看次数: |
2450 次 |
最近记录: |