1、yuv转Rgb
/*************************************************************
函数名称 :Yuv2RgbImage
函数功能 : 获取图片
输出参数 :image_data_buf :图片数据buf,buf大小固定为w*h*3
输入参数 :bSwitchRedBlue true:转成BGR false:转成RGB
用法 :IplImage* Img = cvCreateImage(cvSize(w, h), 8, 3);
readImageromCamera(Img->imageData);
*************************************************************/
void yuv2Rgb(uchar *pImageData, uchar *pYuvData, int w, int h, int iStart, BOOL bMirrorV)
{
if (pImageData == NULL || pYuvData == NULL) return;
int iStep = w * 2;
for(int j = iStart; j < h; j++)
{
uchar* pYuvDataTemp = (pYuvData + iStep * (bMirrorV ? (h - j - 1 + iStart ) : j));
for (int i = 0; i < iStep; i += 4, pImageData += 6)
{
int u = (int)(pYuvDataTemp[i + 3]) - 128;
int v = (int)(pYuvDataTemp[i + 1]) - 128;
int ruv = (1 << 19) + 2130771 * v;
int guv = (1 << 19) - 413812 * v - 608826 * u;
int buv = (1 << 19) + 1195253 * u;
int y00 = max(0, (int)(pYuvDataTemp[i + 0])) << 20;
pImageData[0] = INT_TO_UCHAR((y00 + ruv) >> 20);
pImageData[1] = INT_TO_UCHAR((y00 + guv) >> 20);