我正在尝试用 Python(使用 OpenCV)编写一个程序来比较 2 张图像,显示它们之间的差异,然后通知用户图像之间的差异百分比。我已经做到了,所以它会生成一个 .jpg 来显示差异,但我不知道如何让它计算百分比。有谁知道如何做到这一点?
提前致谢。
这是一个您可以适应的简单想法。但始终确保被比较的图像具有相同的形状。
代码:
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)
img1和img2相似,则大多数像素res将0导致较低的百分比。img1和img2不同,这个百分比会更高。注意:我已经展示了单通道图像,同样可以扩展到多通道图像。