Python. Как сравнить фотографии?

Совсем недавно у меня появилась интересная задача – необходимо было найти одинаковые фотографии на разных объектах недвижимости. Т.е. к объектам недвижимости расположенных с разным местоположением крепилась одна и та же фотография, может ошибочно, может специально, но такие объекты надо было найти. И я хотел бы поделиться тем, как я решал эту задач…

2020

вместо того, чтобы проверять картинку на соответствие каждой следующей, лучше просто сделать словарь (размер : расположение) и если размер картинки будет в словаре, то сравнивать их контент. В случае совпадения будет выводиться сообщение с расположением этих одинаковых картинок

вот мой код, надеюсь он вам поможет:

import os
from PIL import Image, ImageChops

print('Введите ПОЛНЫЙ путь к папке: ', end = '')
directory_in_str = input()

directory = os.fsencode(directory_in_str)
imgs = os.listdir(directory_in_str)
dublicates = {}
try:
    for file in os.listdir(directory):
        filename = os.fsdecode(file)
        last_name = directory_in_str
        last_name += '\\' + filename
        f_info = os.stat(last_name)
        if f_info.st_size in dublicates:
            image_1 = Image.open(last_name)
            image_2 = Image.open(dublicates[f_info.st_size])
            result = ImageChops.difference(image_1, image_2)
            result = result.getbbox()
                if result == None:
                    couter += 1
                    print(f'Найден дубликат: [{last_name} и {dublicates[f_info.st_size]}]')
                else:
                    dublicates[f_info.st_size] = last_name
except:
    print('Ошибка поиска директории!')

print(f'Программа завершила работу, файлов обработано [{couter}].')

1
Автор

Спасибо за готовое решение!