2

画像を変換するYUVRGB、ピクセルを印刷しようとすると Y の値を取得できません。値を取得377し、整数でキャストすると255になります。これは間違っていると思います。YUV 画像ピクセルの値を印刷するより良い方法またはむしろ正しい方法はありますか。

実際、私は値(int)src.at<Vec3b>(j,i).val[0]= 255 をプライティングしていますsrc.at<Vec3b>(j,i).val[0] = 377

また、そのメモでは、Y はメモに従っていくつかの定数で計算された RGB の組み合わせです。Yの値を取得する方法については、実際には混乱しています。

4

1 に答える 1

1

これは OpenCV の問題です。ucharOpenCV は、フォーマットの YUV または HSV の色空間を適切に処理 (スケーリング) しません。Vec3b事実上 3-channelがucharあり、その範囲は [0;255] です。

解決策は、別のマトリックス タイプを使用することです。cv::Mat3f3チャンネルの浮動小数点画像があります。その後、値は関数によって正しく変換されcvtColorます。割り当てにより、Mat3b から Mat3f を取得できます。

cvtColor でサポートされている場合、メモリ使用量が少ない別のソリューションは、Mat3s および Mat3w タイプである可能性があります。

于 2013-05-14T14:06:14.970 に答える