0

我有一个从网络摄像头捕获的字节流(使用 Aforge.Net 库)。但是捕获的图像在 NV12 或 YUV 中返回

我需要将其转换为 RGB 字节流。为了实现这种转换,我需要知道如何读取/解释字节数组。

我希望实现一个功能来做到这一点

byte[] ConvertToRGB(byte[] YCbCrarray)
{

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

    return rgbarray;


}
4

1 回答 1

2

这最好在 C++ 中完成 - 您可以使用 Microsoft 的 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

于 2014-06-27T00:55:56.503 回答