python3实现YUV(黑白图像转RGB图像)转Jpg图片方法浅谈

Posted 小白码农_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3实现YUV(黑白图像转RGB图像)转Jpg图片方法浅谈相关的知识,希望对你有一定的参考价值。

最近工作需要需要把YUV的图像转换成rgb的彩色图方便查看。查阅了很多资料基本上都是说的不太清晰,导致像我这样的小白无法准确的定位代码的正确性,只能试来试去的比较浪费时间。说的如果有不对地方的话请私信指正(首次写博客写的不好大家多多体谅)

如果要转换图像格式,首先要了解图像的组成。

yuv图像有很多格式需要知道具体的是那种格和要转换成正确的分辨率(要不然后面转换图像的话yuv图像会没有颜色,即使转换成功也是黑白的图像。分辨率如果不对的话也会导致图像有问题。所以要转之前一定要弄清除这两点)

yuv的图像格式我就不在这里细说了大家自行查阅相关资料,我直接就上代码了

因为yuv的格式比较原始所以这里我用的是python3的cv2的第三方库和numpy这两个库。

这里我就以gray8,NV21,420P作为本次的样例(这里再补充一点就是要知道图像的解码bit数,位数不对的话也会导致图像转换失败或者转换成功的图像有问题)

首先的话就是引入相应的第三方库

 这里大家只需要引入自己需要的包就行了

步骤分为,打开图片->解析图片->像素点重组->生成新的图片。

打开图片的话我用的是

按照指定bit位数解析图片(这里我用的是8bit格式解析的,需求不一样的根据自己的方法解析就行了)

 重点来了,这里我做了一下格式判断,不同格式根据不同的方法进行重组。

size函数是获取像素点数量的

cv2.reshape(())是根据你填写的宽高进行像素点重组成你想要的矩阵格式(也就是像素,例如 640 480这样的,因为不是所有的图像都是按照格式来的。还是一些不规范的比如640 400的,所以需要提前知道分辨率)

cv2.cvtColor()图像 颜色空间转换,根据对应的图片格式进行色彩渲染,cv2.cvtColor这个第三方库都有方法,大家可以自己去看看需要什么样格式的颜色渲染。

cv_format = cv2.COLOR_YUV2BGR_NV21
cv_format = cv2.COLOR_YUV2BGR_I420

以上这两个是我常用的颜色渲染的参数

如果不加颜色渲染的话就是黑白的图像

大概的图像转换就是这样的,简单的说就是打开图片获取图像像素点然后进行宽高的像素点重组得到一张黑白的图像,在进行是否要加颜色就完成了。

本次说的就是以上内容了,有不明白的或者需要代码的请私信我或者发邮件18610625941@163.com,看到我会及时回复

以上是关于python3实现YUV(黑白图像转RGB图像)转Jpg图片方法浅谈的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现BMP格式转RGB格式YUV格式

图像RGB2YUV与YUV2RGB格式互转介绍

如何将rgb 模式转换成 yuv 模式

怎么将图像YUV格式转成RGB格式(C++)

rgb颜色 红色 转换成yuv颜色空间是啥

C语言实现RGB packet格式转YUV(NV21)格式