图像帧的大小和图像的格式

来源:互联网 发布:linux 禁止ftp 访问ip 编辑:程序博客网 时间:2024/05/17 00:52

图像帧的大小和图像的格式 

 

      首先要明确一点, RGB 和 YUV 只是两种很笼统的划分方法,还需要知道具体的封装方式,才有办法计算出视频帧数据的实际大小。

     对于YUV而言, YUV 格式通常有两大类:打包( packed )格式和平面( planar )格式。前者将 YUV 分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel );而后者使用三个数组分开存放 YUV 三个分量,就像是一个三维平面一样。

      以h.263为例, H.263 编码算法要求图象被编码为一个亮度信号和两个色差成分( Y , Cb 和 Cr ),可以记为 YCbCr , 亮度的取样结构都是 dx 个 象素每行, dy 行每幅图象。 两个色差成分的取样都是 dx/2 个象素每行, dy /2 行每幅 图象。如下图。

                                                                               

     H.263编码算法 要求的这种图象格式对应到 v4l2 里面,就是V4L2_PIX_FMT_YUV420 , (YUV 是 YCbCr , YVU 是 YCrCb ) 。

     V4L2_PIX_FMT_YUV420是一种平坦存储格式,也就是说,在内存中,先存储所有的 Y 值,然后是所有的 Cb 值,最后才是 Cr 值。

     假设有一个 V4L2_PIX_FMT_ Y UV 420 格式的图像,分辨率是 4 × 4 像素,那么该图像帧在内存中存储形式就是

 

 

       根据前面的描述,可以看出一个公式,当使用 V4L2_PIX_FMT_YUV420 格式采集图像的时候,如果图像的宽度为 width ,高度为 height ,那么图像占用的内存的大小就是 imagesize = width * height* 3 / 2。