如何使用 Python 和 OpenCV 计算两个图像之间的差异百分比?

Axe*_*one 6 python opencv

我正在尝试用 Python(使用 OpenCV)编写一个程序来比较 2 张图像,显示它们之间的差异,然后通知用户图像之间的差异百分比。我已经做到了,所以它会生成一个 .jpg 来显示差异,但我不知道如何让它计算百分比。有谁知道如何做到这一点?

提前致谢。

Jer*_*uke 8

这是一个您可以适应的简单想法。但始终确保被比较的图像具有相同的形状。

代码:

img1 = cv2.imread('dog.jpg', 0)
img2 = cv2.imread('cat.jpg', 0)

#--- take the absolute difference of the images ---
res = cv2.absdiff(img1, img2)

#--- convert the result to integer type ---
res = res.astype(np.uint8)

#--- find percentage difference based on number of pixels that are not zero ---
percentage = (numpy.count_nonzero(res) * 100)/ res.size
Run Code Online (Sandbox Code Playgroud)
  • 如果img1img2相似,则大多数像素res0导致较低的百分比。
  • 如果img1img2不同,这个百分比会更高。

注意:我已经展示了单通道图像,同样可以扩展到多通道图像。