yuv转rgb的函数

[cpp]  view plain copy
  1. #define MR(Y,U,V) (Y + (1.403)*(V-128))  
  2. #define MG(Y,U,V) (Y - (0.344) * (U-128) - (0.714) * (V-128) )   
  3. #define MB(Y,U,V) (Y + ((1.773) * (U-128)))  

yuv转rgb的函数:

[cpp]  view plain copy
  1. void YUV420_C_RGB( char* pYUV, unsigned char* pRGB, int height, int width)  
  2. {  
  3.     char* pY = pYUV;  
  4.     char* pU = pYUV+height*width;  
  5.     char* pV = pU+(height*width/4);  
  6.   
  7.   
  8.     unsigned char* pBGR = NULL;  
  9.     unsigned char R = 0;  
  10.     unsigned char G = 0;  
  11.     unsigned char B = 0;  
  12.     char Y = 0;  
  13.     char U = 0;  
  14.     char V = 0;  
  15.     double tmp = 0;  
  16.     for ( int i = 0; i < height; ++i )  
  17.     {  
  18.         for ( int j = 0; j < width; ++j )  
  19.         {  
  20.             pBGR = pRGB+ i*width*3+j*3;  
  21.   
  22.             Y = *(pY+i*width+j);  
  23.             U = *pU;  
  24.             V = *pV;  
  25.   
  26.             //B  
  27.             tmp = MB(Y, U, V);  
  28.             //B = (tmp > 255) ? 255 : (char)tmp;  
  29.             //B = (B<0) ? 0 : B;  
  30.             B = (unsigned char)tmp;  
  31.             //G  
  32.             tmp = MG(Y, U, V);  
  33.             //G = (tmp > 255) ? 255 : (char)tmp;  
  34.            // G = (G<0) ? 0 : G;  
  35.             G = (unsigned char)tmp;  
  36.             //R  
  37.             tmp = MR(Y, U, V);  
  38.             //R = (tmp > 255) ? 255 : (char)tmp;  
  39.             //R = (R<0) ? 0 : R;  
  40.             R = (unsigned char)tmp;  
  41.   
  42.   
  43.             *pBGR     = R;              
  44.             *(pBGR+1) = G;          
  45.             *(pBGR+2) = B;  
  46.           
  47.   
  48.             if ( i%2 == 0 && j%2 == 0)  
  49.             {  
  50.                 *pU++;  
  51.                 //*pV++;  
  52.             }  
  53.             else  
  54.             {  
  55.                 if ( j%2 == 0 )  
  56.                 {  
  57.                     *pV++ ;  
  58.                 }  
  59.             }  
  60.         }  
  61.       
  62.     }  
  63. }  

你可能感兴趣的:(video)