Вы упомянули images
вместо file
, поэтому я предполагаю, что вы не хотите сравнивать необработанные данные, а только пиксели изображения, и вам также может потребоваться пороговое значение для разницы между изображениями
Простой способсделать это сравнить два изображения с помощью PIL.PIL имеет функцию histogram
, вы можете использовать ее, чтобы получить гистограмму для обоих изображений, а затем получить среднеквадратическое значение (например,
import ImageChops
import math, operator
def rmsdiff(im1, im2):
"Calculate the root-mean-square difference between two images"
h = ImageChops.difference(im1, im2).histogram()
# calculate rms
return math.sqrt(reduce(operator.add,
map(lambda h, i: h*(i**2), h, range(256))
) / (float(im1.size[0]) * im1.size[1]))
, скопированное из http://effbot.org/zone/pil-comparing-images.htm
один разу вас есть функция, которая возвращает rmsdiff, вы можете использовать ее в другой функции, которая перебирает все файлы, например
def diff_folder(folder1, folder2):
for path1 in glob.glob(folder1+"/*.png"):
filename = os.path.basename(path1)
path2 = os.path.join(folder2, filename)
if not os.path.exists(path2):
continue
im1 = Image.open(path1)
im2 = Image.open(path2)
diff = rmsdiff(im1, im2)
if diff > threshold:
print "different"