Сравните два изображения способом Python/LinuxPython

Программы на Python
Ответить
Anonymous
 Сравните два изображения способом Python/Linux

Сообщение Anonymous »

Пытаюсь решить проблему предотвращения загрузки дубликатов изображений.

У меня есть два файла JPG. Глядя на них, я вижу, что они на самом деле идентичны. Но по какой-то причине у них разный размер файлов (один вытащен из резервной копии, другой - закачен) и поэтому у них разная контрольная сумма md5.

Как я могу эффективно и уверенно сравнивать два изображения так, чтобы человек мог видеть, что они явно идентичны?

Пример: http://static.peterbe.com/a.jpg и http://static.peterbe.com/b.jpg

Обновить

Я написал это сценарий:

Код: Выделить всё

import math, operator
from PIL import Image
def compare(file1, file2):
image1 = Image.open(file1)
image2 = Image.open(file2)
h1 = image1.histogram()
h2 = image2.histogram()
rms = math.sqrt(reduce(operator.add,
map(lambda a,b: (a-b)**2, h1, h2))/len(h1))
return rms

if __name__=='__main__':
import sys
file1, file2 = sys.argv[1:]
print compare(file1, file2)
Затем я загрузил два визуально идентичных изображения и запустил скрипт. Вывод:

Код: Выделить всё

58.9830484122
Может ли кто-нибудь сказать мне, какой должна быть подходящая обрезка?

Обновление II

Разница между a.jpg и b.jpg заключается в том, что второй файл сохранен с помощью PIL:

Код: Выделить всё

b=Image.open('a.jpg')
b.save(open('b.jpg','wb'))
Очевидно, это предполагает некоторые очень легкие изменения качества. Теперь я решил свою проблему, применив то же PIL-сохранение к загружаемому файлу, ничего с ним не делая, и теперь это работает!

Подробнее здесь: https://stackoverflow.com/questions/192 ... -linux-way
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»