关于YUV图像的处理
本文主要讲解一下YUV420的存储,是博主在接触YUV图像时候总结出来的一些经验。多为自己的理解和认识,欢迎大家批评指正。
- YUV420的介绍
yuv420是yuv的一种采样格式
y是代表像素的灰阶值,uv是表示色度的。4:2:0是采样的比例,4个y共用一组uv值。隔行采样。 - YUV的图像存储
上面说到的隔行采样是指如下:
上图这样同色的Y值共用同一组U,V值。隔行采一次样。像素数据也按照图中格式储存。 - RGB2YUV
RGB图像的大小是同尺寸YUV图像的两倍大小。
因为RGB图像中的每个像素值都需要用R,G,B三个值表示。
故将rgb转yuv有以下代码:
void RgbWriteYuv(int& ywidth,int& yheight,char* image)
{ //image is rgb's value
FILE *inputYUV = fopen("yuv420.yuv", "wb");
int size_total = yheight*ywidth*3;
int size = size_total/2;
int* YUV_matrix = (int*)malloc(size*sizeof(int));
memset(YUV_matrix, 0, size_total);
int* RGB_matrix = (int*)malloc(size_total *