YUV 详解

本文详细介绍了YUV的原理,包括YUV的分类、理解方式、数据位数和排列格式。通过实例探讨了如何处理8bits和10bits的YUV数据,以及在Python中读取和处理YUV图像的方法,强调了了解YUV数据量、位数和排列方式的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象

本文解决的问题:Python处理YUV数据,读取YUV数据并保存为其他类型的图片
简述下起因:
网上找了很多资料,基本都是大同小异,但是当时自己无法理解,直到现在才算是理解了,故而希望能深入浅出的讲清楚

YUV简介

“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度 --维基百科

YUV分类

https://juejin.cn/post/6920848468797816846

如何理解YUV

我会从三个方面讲:YUV排列格式,YUV数据个数,YUV bits。

必须得承认YUV的格式非常的繁多复杂,可能是由于曾经大家都闭门造车导致一家一个格式,YUV有一个特殊的格式400,也就是只有Y分量。在彩色电视出现以前,是黑白电视,YUV解决了这样一个问题,这个问题是RGB无法处理的。

当用户的电视机是彩色的时候,YUV和RGB都能正常显示,但是当用户的电视机是黑白的时候,就需要去除颜色信息,YUV400格式就是黑白图像,当只有Y输入的时候就是黑白图,所以当用户是黑白电视机的时候可以直接舍弃UV分量。

YUV就是int类型的数据,可以理解为纯二进制数据。

YUV文件存储的是0,1两个数字的排列。如果YUV是一张图,那么我们必须知道YUV图片的宽高信息,然后还需要知道YUV的排列格式,最后还需要知道YUV是8bits还是10bits保存的。

举例:
如果一张yuv图片,是8bits的,那么 numpy 中可以这样读取 yuv_data = np.fromfile(yuv_filepath, np.uint8)
此时我们有了yuv的数据,然后就是处理这些数据

我们以Y为基准,Y的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值