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 ピクセルあたり 1 バイト)、次に UV (4 ピクセルあたり 2 バイト) です: http://www.fourcc.org/yuv.php#NV12

于 2014-06-27T00:55:56.503 に答える