opencv报告图像之间的颜色差异

opencv report color differences between images

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

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

我已经能够将 bgr-images 转换为 hsv-images 并将它们分成 3 个通道。 取两个图像的每个通道的平均值,然后只输出这些平均值的差值,会不会是一个 good/correct 的想法?或者是否有更好的或已经包含在 opencv 中的方法? 谢谢!

答案已在评论中给出,感谢 Miki 和 Sunreef。

如果您想要示例中的结果,图像之间的正常差异就可以了(当 Mats 为 CV_8U 格式时,使用 A.convertTo(A, CV_32F)) 转换为 CV_32F:

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

然而,对于非常不同的图像,这可能导致 0 均值差异,因此如果输出的符号(正或负变化)不相关但图像相等,请使用:

Mat3b diff; absdiff(A,B, diff);
Scalar mean_diff = mean(diff);