2013-07-11 56 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