java yuv转bitmap_Android的YUV_420_888图片转换Bitmap时的rowStride问题

简介

在Android上开发目标检测识别的程序时,需要最终传入Bitmap格式的数据给Native Library的接口,完成C/C++端代码的调用,所以,不能将Android Camera拿到的图像数据Image或ImageProxy直接传入。

这里牵涉到一个图像处理的细节,Android的Camera相关开发一直是一个难点,特别是牵涉到各种摄像头硬件时,所以Android也不停改善,有了Camera,又提供了Camera2,但是Camera2的API比较复杂,让人难以集中于业务逻辑的开发,所以在推出Jetpack时,也包含了CameraX组件。当然,这不是本文的重点。

重点是,一般的图形图像处理时,从性能考虑,拿到的图像信息都是以YUV方式编码的,这种方式确实有很多好处,可以节省存储空间(也意味着降低了传输成本),对黑白屏的支持也是天然的,不需要再转码。YUV的具体知识,可以参见: 一文读懂 YUV 的采样与格式

但是使得不得不加入了Image转Bitmap的操作,但是不知道为什么,在我看来是一个挺常用的操作,但是Android却没有提供原生支持,由于Android的碎片化,实现起来还挺繁琐的。

问题

由于目标检测的代码,是C++实现的,接受的参数是一个bitmap对象,这样就需要图像格式转码。由上文的一文读懂 YUV 的采样与格式可以看出,YUV和RGB的转换公式其实挺简单的,但问题在于这个如果用Java来实现的话,就会造成性能问题(这里可以考虑引入Kotlin Native来完成)&#

你可能感兴趣的:(java,yuv转bitmap)