图解YUV格式

YUV格式有两大类:planar和packed。
对于planar的YUV格式,Y,U,V都是连续存放的,比如 YYYYUUUUVVVV
对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。

RGB24,BGR24等等都是packed方式存储的

YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0

画了个图解,加深一下理解

 

enum AVPixelFormat {

    AV_PIX_FMT_NONE = -1,

    AV_PIX_FMT_YUV420P,   ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)

    AV_PIX_FMT_YUYV422,   ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr

    AV_PIX_FMT_RGB24,     ///< packed RGB 8:8:8, 24bpp, RGBRGB...

    AV_PIX_FMT_BGR24,     ///< packed RGB 8:8:8, 24bpp, BGRBGR...

    AV_PIX_FMT_YUV422P,   ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)

AV_PIX_FMT_YUV444P,   ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)

    AV_PIX_FMT_NV12,      ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)

    AV_PIX_FMT_NV21,      ///< as above, but U and V bytes are swapped

    AV_PIX_FMT_ARGB,      ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...

    AV_PIX_FMT_RGBA,      ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...

    AV_PIX_FMT_ABGR,      ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...

AV_PIX_FMT_BGRA,      ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...

         …

   };

 

RGB24

RGB交替排列,RGBRGBRGB

占用空间Width*Height*3

 

YUV420P

 

YU12(I420)

图解YUV格式_第1张图片

每4个Y分量,共一个UV分量

Y是连续的,U也是连续的,V也是连续的

占用空间 Width*Height + Width*Height/4 + Width*Height/4

 

YV12

图解YUV格式_第2张图片

每4个Y分量,共一个UV分量

Y是连续的,U也是连续的,V也是连续的,只是V在U前面

占用空间 Width*Height + Width*Height/4 + Width*Height/4

 

YUV420SP

NV12

图解YUV格式_第3张图片

每4个Y分量,共一个UV分量

Y是连续的,UV是交替存放的,先U后V

占用空间 Width*Height + Width*Height/4 + Width*Height/4

 

NV21

图解YUV格式_第4张图片

每4个Y分量,共一个UV分量

Y是连续的,UV是交替存放的,先V后U

占用空间 Width*Height + Width*Height/4 + Width*Height/4

 

YUV422P

图解YUV格式_第5张图片

每两个Y分量,共一个UV分量

Y是连续的,U是连续的,V也是连续的

占用空间Width *Height + Width*Height/2 +Width*Height/2

 

YUYV422

图解YUV格式_第6张图片

每两个Y分量,共一个UV分量

YUV是间隔排列,按照 YUYV依次排列

占用空间Width *Height + Width*Height/2 +Width*Height/2

 

YUV444P

每一个Y分量对应一个U分量,对应一个V分量

占用空间Width *Height*3

 

你可能感兴趣的:(绘图)