首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从android.media.Image到Mat

从android.media.Image到Mat
EN

Stack Overflow用户
提问于 2015-02-23 22:10:43
回答 1查看 3.2K关注 0票数 6

我正在使用Android Camera2接口从摄像头获取帧。我可以使用acquireLatestImage()方法获得一个读取图像对象的ImageReader。

因为我需要处理获取的帧,所以我必须将每个Image对象转换为Mat对象。我认为这是一个非常常见的问题,所以我希望找到一个方便的OpenCV方法来实现这一点。然而,我没有找到任何东西。

你有关于如何使用Android Camera2从相机帧中获取Mat对象的想法吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-05-12 13:07:28

这取决于您为ImageReader类设置的ImageFormat。下面的代码假设它使用的是JPEG格式。

代码语言:javascript
复制
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();

请注意,imdecode相当慢。我不完全确定,但我认为YUV_420_888转换为Mat对象会更快,但我自己还没有想出怎么做。我看到这个post尝试将YUV转换成一个垫子,

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28675676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档