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,看到我会及时回复

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值