这里有很多问题可以检查两个图像是否“几乎”相似。 我的任务很简单。使用 OpenCV,我想知道两个图像是否 100% 相同。 它们将具有相同的大小,但可以使用不同的文件名保存。 原文由 milan m 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用逻辑运算符,例如 xor 运算符。如果你使用的是 python 你可以使用下面的一行函数: Python def is_similar(image1, image2): return image1.shape == image2.shape and not(np.bitwise_xor(image1,image2).any()) 其中 shape 是显示矩阵大小的属性,而 bitwise_xor 顾名思义。 C++版本可以用类似的方式制作! C++ 请参阅@berak 代码。 注意: Python 代码适用于任何深度图像(1-D、2-D、3-D ……),但 C++ 版本仅适用于 2-D 图像.自己很容易将其转换为任何深度图像。我希望这能给你带来洞察力! :) 文档: bitwise_xor 编辑: C++ 被删除。感谢@Micka 和@berak 的评论。 原文由 Hadi 发布,翻译遵循 CC BY-SA 3.0 许可协议
差值之和应为 0(对于所有通道): bool equal(const Mat & a, const Mat & b) { if ( (a.rows != b.rows) || (a.cols != b.cols) ) return false; Scalar s = sum( a - b ); return (s[0]==0) && (s[1]==0) && (s[2]==0); } 原文由 berak 发布,翻译遵循 CC BY-SA 3.0 许可协议
您可以使用逻辑运算符,例如
xor
运算符。如果你使用的是python
你可以使用下面的一行函数:Python
其中
shape
是显示矩阵大小的属性,而bitwise_xor
顾名思义。 C++版本可以用类似的方式制作!C++
请参阅@berak 代码。
注意:
Python
代码适用于任何深度图像(1-D、2-D、3-D ……),但C++
版本仅适用于 2-D 图像.自己很容易将其转换为任何深度图像。我希望这能给你带来洞察力! :)文档: bitwise_xor
编辑:
C++
被删除。感谢@Micka 和@berak 的评论。