问题描述
对比两个图片的差异
使用cv2.adsdiff()
import cv2
if __name__ == '__main__':
img1 = r'D:\01.PNG'
img2 = r'D:\02.PNG'
img_diff = cv2.absdiff(cv2.imread(img1), cv2.imread(img2))
cv2.imwrite("D:\\3.png", img_diff)
使用ImageChops.difference()
from PIL import Image, ImageChops
def compare_images(path_one, path_two, diff_save_location):
"""
比较图片,如有差异,则保存
@参数一: path_one: 第一张图片的路径
@参数二: path_two: 第二张图片的路径
@参数三: diff_save_location: 不同图的保存路径
"""
image_one = Image.open(path_one)
image_two = Image.open(path_two)
try:
diff = ImageChops.difference(image_one, image_two)
if diff.getbbox() is None:
print("图片一样!!!")
else:
diff.show()
diff.save(diff_save_location)
except ValueError as e:
print(e)
if __name__ == '__main__':
img1 = r'D:\PythonWork\auto_difference\20220825163443\1\1\png_old_block\A1_AT88.PNG'
img2 = r'D:\PythonWork\auto_difference\20220825163443\1\1\png_new_block\A1_AT88.PNG'
diff_save = r'D:\03.png'
compare_images(img1, img2, diff_save)
原因分析:
无意中发现两张图片有背景的话,上面用的两个方法,差分出来的结果一致。
而我刚好对比的两张图片是没有背景的。
解决方案:
分别给两张无背景的图片添加了黑色的背景,然后再进行差异对比。
结果,两种方法,对比结果一致。问题解决。