| 发表于:2007-05-30 11:53:56 楼主 |
如下的函数,我用来进行yuv420转rgb,但是转换后的图像颜色很有问题,如果把,v,u置0,灰度图像可以出来,我推测可能是u,v读出来有问题,但我实在找不出怎么修改,请各位大虾指点!!!感谢万分!!! void cyuv2rgbdlg::yuv2rgb(unsigned char *src, unsigned char *dest, int cx, int cy) { int i, j; unsigned char *bufy, *bufu, *bufv, *bufrgb; bufy = src; bufu = src + cx * cy; bufv = src + int(cx * cy* 5/4); unsigned char y, u, v, r, g, b; for( j = 0; j < cy; j++ ) { bufrgb = dest + cx * (cy - 1 - j) * 3 ; for( i = 0; i < cx; i++ ) { y = *(bufy + i + j * cx); u = *(bufu + (i> > 1) +( j> > 1)*cx/2 ) - 128; v = *(bufv + (i> > 1) + (j> > 1)*cx/2 ) - 128; r = y + 1.402 * v; g = y - 0.344 * u - 0.714 * v; b = y + 1.717 * u; *( bufrgb++ ) = max( 0, min( r, 255 ) ); *( bufrgb++ ) = max( 0, min( g, 255 ) ); *( bufrgb++ ) = max( 0, min( b, 255 ) ); } } } |
|
|
|
|