comparación de imágenes de python
Encontré un código de comparación de imágenes en Internet y encontré un método de la siguiente manera:
from PIL import Image
from PIL import ImageChops
def compare_images(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("We are the same!")
else:
diff.save(diff_save_location)
except ValueError as e:
text = ("表示图片大小和box对应的宽度不一致")
print("【{0}】{1}".format(e,text))
Este método puede lograr la comparación de imágenes, pero el efecto no es muy bueno, y luego encontré un método más útil (no quiero usar CV2) como sigue, compártelo contigo
#图像比较
from PIL import Image
import math
import operator
from functools import reduce
def compare_images(pic1,pic2):
image1 = Image.open(pic1)
image2 = Image.open(pic2)
histogram1 = image1.histogram()
histogram2 = image2.histogram()
differ = math.sqrt(reduce(operator.add, list(map(lambda a,b: (a-b)**2,histogram1, histogram2)))/len(histogram1))
print('differ:',differ)
if differ == 0:
return 'same'
else:
return 'diff'