先记住下面这段话,以后提取每个像素的 YUV分量会用到。
- YUV 4:4:4 采样,每一个 Y对应一组UV分量。
- YUV 4:2:2 采样,每两个 Y共用一组UV分量。
- YUV 4:2:0 采样,每四个 Y共用一组UV分量。
以720×488大小图象YUV420 planar为例,其存储格式是: 共大小为
(720×480×3>>1)字节,分为三个部分:Y,U和V
Y分量 :(720×480)个字节
Y分量 :(720×480)个字节
U(Cb)分量:(720×480>>2)个字节
V(Cr)分量:(720×480>>2)个字节
三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。
即YUV数据的0-720×480字节是Y分量值, 720×480-720×480×5/4字节是U分量, 720×480×5/4-720×480×3/2字节是V分量。
4 :2: 2 和4:2:0 转换:
最简单的方式:
YUV4:2:2 ---> YUV4:2:0 Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。
V(Cr)分量:(720×480>>2)个字节
三个部分内部均是行优先存储,三个部分之间是Y,U,V 顺序存储。
即YUV数据的0-720×480字节是Y分量值, 720×480-720×480×5/4字节是U分量, 720×480×5/4-720×480×3/2字节是V分量。
4 :2: 2 和4:2:0 转换:
最简单的方式:
YUV4:2:2 ---> YUV4:2:0 Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。
YUV4:2:0 ---> YUV4:2:2 Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。
YV12和I420的区别
一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。
一般来说,直接采集到的视频数据是RGB24的格式,RGB24一帧的大小size=width×heigth×3 Bit,RGB32的size=width×heigth×4,如果是I420(即YUV标准格式4:2:0)的数据量是 size=width×heigth×1.5 Bit。
在采集到RGB24数据后,需要对这个格式的数据进行第一次压缩。即将图像的颜色空间由RGB2YUV。因为,X264在进行编码的时候需要标准的YUV(4:2:0)。
From: https://blog.csdn.net/wudebao5220150/article/details/13295603