记录H264格式数据解码YUV数据转Bitmap后图像红蓝颠倒问题

在工作中需要将摄像头的摄像头的视频流数据转为YUV格式,供算法去处理图像,为了方便调试就将每帧数据又转成了Bitmap去显示,效果如下:
在这里插入图片描述

起初,看到画面正常显示后,就没太在意图像的内容,直到看见蓝色瓶的可口可乐(实际是红色的),事情好像不太对,后续发现所有红色的东西在画面中都变成了蓝色,然后算法识别的结果也不太好,才发现了问题的严重性。

Bitmap 转换问题?好像不是,yuv数据有问题?是直接从摄像头视频流解码出来的啊!总不能是摄像头有问题吧!看了摄像头预览效果正常的。头大,直到在网上看到:

UV排列反了。
比如说,NV21和YUV420SP的Y排列相同,UV则相反。给你YUV420SP,你当作NV21保存JPG,就会 发生红蓝颠倒。
抱着试试的态度,那就把UV转换以下看看把,原神,启动!

在这里插入图片描述

正常了,好神奇,哈哈哈。
就简单记下吧,部分代码如下,从解码到转Bitmap

    fun decode(data: ByteArray, offset: Int, length: Int) {
   
   
        val inputBuffers = codec?.inputBuffers
        val outputBuffers = codec?.outputBuffers
        val inputBufferIndex = codec?.dequeueInputBuffer(10000) ?: -1

        if (inputBufferIndex >= 0) {
   
   
            val inputBuffer = inputBuffers?.get(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值