0

假设图像 A 和图像 B,其中 B 是 A 的修改副本,具有整体更高的 HSV 值和更低的饱和度。如何使用 OpenCV 报告这些差异?

前任。输出:色调 0,饱和度 -25,HSV 值 +25。

我已经能够将 bgr-images 转换为 hsv-images 并将它们分成 3 个通道。取两个图像的每个通道的平均值并输出这些平均值的差值是否是一个好/正确的主意?或者是否有更好的或已经包含在 opencv 中的方式?谢谢!

4

1 回答 1

2

评论中给出了答案,因此归功于 Miki 和 Sunreef。

如果您想要示例中的结果,图像之间的正常差异就可以了(当 Mats 是 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 回答