在进行VideoNet的程序(在http://www.codeproject.com/Articles/7573/VideoNetb下载的)学习中,发现在进行调试时,
1. 运行到 ConvertRGB2YUV 函数时,在
*y++=( RGB2YUV_YR[*r] +RGB2YUV_YG[*g]+RGB2YUV_YB[*b]+1048576)>>16; 出down掉!
崩溃! 程序每次到这里崩溃,我也崩溃了!后来反复查网上帖子,有几个说的还行,总体说来,还是没有根本解决:出现这个问题的原因是摄像头采集到的数据是YUY2 的格式, 而ConvertRGB2YUV函数只认识RGB 的格式,所以需要将 YUY2的数据转换成RGB 的格式,于是又疯狂的搜索,终于找到这个宝贵的函数:
/************************************************************************/
/* 函数名称: YUY2_RGB2_ljh
/* 参数:unsigned char *YUY2buff,unsigned char *RGBbuff,long dwSize
YUY2buff 原始待转换的 YUY2 的数据
RGBbuff 转换后的 RGB 数据
dwSize 数组大小
/* 返回值:void
/* 作者:ljhua
/* 时间:2012-08-11
/************************************************************************/
void YUY2_RGB2_ljh(unsignedchar *YUY2buff,unsigned char *RGBbuff,longdwSize)
{
//
//C = Y - 16
//D = U - 128
//E = V - 128
//R = clip(( 298 * C + 409 * E + 128) >> 8)
//G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
//B = clip(( 298 * C + 516 * D + 128) >> 8)
unsigned char *orgRGBbuff = RGBbuff;
for( lon