YUV420SP格式上直接画点
static void Draw_Point(unsigned char *pimg, int w, int h, int x, int y, unsigned char r, unsigned char g, unsigned char b)
{
if(w<1 || h<1 || x<0 || y<0){
//printf("Err: invliad param\n");
return;
}
if(x>=w || y>=h){
return;//printf("Err: invliad x:%d, y:%d\n", x, y);
}
float R = (float)r;
float G = (float)g;
float B = (float)b;
float Y = 0.299*R + 0.587*G + 0.114*B;
float U = -0.169*R - 0.331*G + 0.5 *B + 128.0;
float V = 0.5 *R - 0.419*G - 0.081*B + 128.0;
unsigned char oY = (unsigned char)Y;
unsigned char oU = (unsigned char)U;
unsigned char oV = (unsigned char)V;
unsigned char *pY = pimg + y*w + x;
int X = (1==(x&0x1))?(x-1):x;
unsigned char *pV = pimg + w*h + (y/2)*w + X;
unsigned char *pU = pV+1;
*pY = oY;
*pU = oU;
*pV = oV;
return;
}
评论已关闭