gpt4 book ai didi

java - 从 android.media.Image 到 Mat

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:07 30 4
gpt4 key购买 nike

我正在使用 Android Camera2 API 从相机获取帧。我可以获得一个 ImageReader,它使用 acquireLatestImage() 方法读取 Image 对象。

由于我需要处理获取的帧,所以我必须将每个 Image 对象转换为 Mat 对象。我想这是一个很常见的问题,所以我希望找到一个方便的 OpenCV 方法来做到这一点。但是我没有找到任何。

您是否知道如何使用 Android Camera2 从相机框架中获取 Mat 对象?谢谢

最佳答案

这取决于什么ImageFormat您为 ImageReader 类设置的。下面的代码假定它使用的是 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();

请注意 imdecode 非常慢。我不完全确定,但我认为 YUV_420_888转换为 Mat 对象会更快,但我还没有弄清楚如何自己做。我看到这个post尝试将 YUV 转换为 Mat,

关于java - 从 android.media.Image 到 Mat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28675676/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com