openCV 判断两个图片是否相同

一、背景
在做安卓端的自动化测试,使用opencv图片对比。

上网找资源
https://www.cnblogs.com/webRobot/p/6216994.html

明明一样的图片还能不一样?我很懵。。。

import cv2
import numpy as np

file1 = 'update_before.png'
file2 = 'update_after.png'

im1 = cv2.imread(file1)
im2 = cv2.imread(file2)
# print(im1)
# print('这里是分割')
# print(im2)
if im1.shape == im2.shape:
    print('shape一样')
else:
    print('shape not equal')

difference = cv2.subtract(im1,im2)
print(difference)
result = not np.any(difference)

if result is False:
    print('一样')
else:
    cv2.imwrite('reslult.jpg',difference)
    print('不一样')

为了验证,把图片数组打印出来,一模一样。

后来发现是参考的博文错了。
在这里插入图片描述
后面自己找了英文的解释来看:
在这里插入图片描述
意思是说:
在做图片对比时,应先比较图片的shape和pixel值是否一样,在这个前提下去调用:difference = cv2.subtract(im1,im2) 比较两者的不同。数组 相减为0,返回False,图片一样。

所以应该是 if result is False:
print(‘一样’)。

总结:
1、对代码应该有自己的理解。
2、不断总结。
3、加油。


版权声明:本文为jqp1997原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。