首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在OpenCV Mat中将图像从安卓发送到JNI的最有效的方法

在OpenCV Mat中将图像从安卓发送到JNI的最有效的方法
EN

Stack Overflow用户
提问于 2018-06-04 17:11:13
回答 1查看 2.5K关注 0票数 17

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-09-05 21:05:42

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

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

代码语言:javascript
复制
Mat mat = Yuv.toMat(image)

https://github.com/quickbirdstudios/yuvToMat

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

https://stackoverflow.com/questions/50677063

复制
相关文章

相似问题

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