3

YUVピクセル(x、y)をRGBピクセルに変換するJavaを使用してアプリを開発しています。これが私がしたことです:(データはYUVバイト配列です)

int Y = data[ y * width + x];
            int U = data[ (int) (width * height + Math.floor(y/2) * Math.floor(width/2) + Math.floor(x/2) + 1)];
            int V = data[ (int) (width * height + Math.floor(y/2) * (width/2) + Math.floor(x/2) + 0)];

            int B = (int) (1.164*(Y - 16)+ 2.018*(U - 128));

            int G = (int) (1.164*(Y - 16) - 0.813*(V - 128) - 0.391*(U - 128));

            int R = (int) (1.164*(Y - 16) + 1.596*(V - 128));

しかし、最終的に、取得した RGB 値が負であることがわかりました。誰かがこれで私を助けることができますか? ありがとうございました!

4

3 に答える 3

1

YUV には多くの「フレーバー」があり、YCbCr と混同されることがあります。あなたの数式は、Y が [16,235] にある形式に適しているように見えますが、これは Android で返される NV21 画像形式 (標準の YUV 平面の一種) には正しくないことがわかります。

于 2012-12-07T01:03:17.717 に答える