gpt4 book ai didi

java - 将 YUV_420_888 中的图像从 Android 发送到 OpenCV Mat 中的 JNI 的最有效方法

转载 作者:IT老高 更新时间:2023-10-28 23:15:01 33 4
gpt4 key购买 nike

我有一个 android 应用程序,我想在其中对来自 android Camera2 API 的实时图像运行一些 OpenCV 图像处理。目前,如果我不进行任何处理,我可以在 OnImageAvailble 函数中以 30 fps 的速度接收常规 1280x720 帧的图像。

现在,作为一个肮脏的黑客,我从 ImageReader 以 JPEG 格式请求图像,然后将位图传递给 jni,这大大降低了性能。

将 YUV 帧传递给 cv Mat 对象中的 jni 的最有效方法是什么。另外,我想将此帧转换为 RGB 以进行进一步处理。我应该在 Java 端更改格式还是应该将 Mat 对象传递给 jni 并仅在此处转换颜色空间。

最佳答案

也许对您有帮助:由于我们进行了大量的图像处理,因此我们在公司为此编写了一个库。它不是用 C 语言编写的,但它的性能非常好。转换后,您可以简单地将 Mat 指针通过 JNI 传递给您的 C 代码。

它将 YUV(标准 Android 相机格式 YUV_420_888)转换为 RGB Mats。此外,它还允许在转换之前有效地裁剪 YUV(对于非常大的图像很重要,否则您需要转换整个图像,然后再进行裁剪,这很昂贵)。用法很简单:

Mat mat = Yuv.toMat(image)

https://github.com/quickbirdstudios/yuvToMat

关于java - 将 YUV_420_888 中的图像从 Android 发送到 OpenCV Mat 中的 JNI 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50677063/

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