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; }

标签: none

评论已关闭