0

イメージ A とイメージ B を想定します。ここで、B は A の変更されたコピーであり、全体的に高い HSV 値と低い彩度を備えています。OpenCV を使用してこれらの違いを報告するにはどうすればよいですか?

元。出力: 色相 0、彩度 -25、HSV 値 +25。

私はすでに bgr-images を hsv-images に変換し、これらを 3 つのチャネルに分割することができました。両方の画像の各チャネルの平均を取り、これらの平均の差を出力するのは良い/正しい考えでしょうか? それとも、opencv に既に含まれている、より良い方法がありますか? ありがとう!

4

1 に答える 1

2

コメントで回答が得られたので、クレジットはミキとサンリーフに送られます。

例のような結果が必要な場合は、画像間の通常の違いで十分です (マットが CV_8U 形式の場合、以下を使用して CV_32F に変換しますA.convertTo(A, CV_32F))

Mat diff = B - A;
Scalar mean_diff = mean(diff);

ただし、これにより、非常に異なる画像の平均差が 0 になる可能性があるため、出力の符号 (正または負の変化) は関係ないが、画像の同等性が重要である場合は、次を使用します。

Mat3b diff; absdiff(A,B, diff);
Scalar mean_diff = mean(diff);
于 2016-05-26T15:21:28.030 に答える