2013-07-11 55 views
0

我有从网络摄像头捕获的字节流(使用Aforge.Net库)。但捕获的图像返回NV12或YUV将NV12(YUV4:2:0)字节阵列转换为RGB字节阵列

我需要将其转换为RGB字节流。

我希望能实现,做了这个功能

byte[] ConvertToRGB(byte[] YCbCrarray) 
{ 

//Read the byte array and encode it in RGB format and return it as a byte array 

    return rgbarray; 


} 

回答

1

,这是最好的C++做 - 你可以使用微软的DirectXTex库它(如果你想测试的代码)。

您也可以自己使用下面的公式将其转换:

CLIP(X) ((X) > 255 ? 255 : (X) < 0 ? 0 : X) 
// YCbCr -> RGB 
CYCbCr2R(Y, Cb, Cr) CLIP(Y + (91881 * Cr >> 16) - 179) 
CYCbCr2G(Y, Cb, Cr) CLIP(Y - ((22544 * Cb + 46793 * Cr) >> 16) + 135) 
CYCbCr2B(Y, Cb, Cr) CLIP(Y + (116129 * Cb >> 16) - 226) 

请注意,你需要的形象,而不仅仅是字节大小的尺寸。 NV12中的Y通道位于第一位(每个像素1个字节),然后是UV(每4像素2个字节),如下所述:http://www.fourcc.org/yuv.php#NV12