void YUV422ToRGB(int width,int height,unsigned char* yuvin,unsigned char*rgbout)
{
int col,row;
int Y,U,V ;
int red,blue,green;
int idx,rowptr,colhalf;
bool result=false;
for( row=0 ; row< height; row++ ) //; row<height; row++
{
idx=row*3*width;
rowptr=row*width;
for( col=0; col<width; col++ ) //; col<width; col++)
{
colhalf= col>>1;//col shr 1;
Y=yuvin[rowptr+col];
U=yuvin[rowptr+colhalf+width*height-(int)(row*width/2)];
V=yuvin[rowptr+colhalf+width*height-(int)(row*width/2)+(int)(width*height/2)];
red=(int)(Y+(U-128)*1.375);
green=(int)(Y-(U-128)*0.34375-(V-128)*0.703125);
blue=(int)(Y+(V-128)*1.734375);
if( red>255 ) red=255
else if (red<0) red=0;
if (green>255) green=255
else if( green<0 ) green=0;
if (blue>255 ) blue=255
else if( blue<0 ) blue=0;
rgbout[idx]= (unsigned char)(red);
idx++;//inc(idx);
rgbout[idx]=(unsigned char)(green);
idx++;//inc(idx);
rgbout[idx]=(unsigned char)(blue);
idx++;//inc(idx);
}
}
}
YUV422 to RGB 转换
最新推荐文章于 2023-06-16 10:29:47 发布