код python для сравнения изображений в python
Я работаю над проектом, в котором в один момент мне нужно сравнить два изображения.кто-нибудь может пожалуйста помочь мне с способ делать so..By образами являются скриншотами программы. я хотел проверить, идентичны ли два изображения, включая цифры и буквы, отображаемые на изображении(скриншот программного обеспечения)..
3 ответов
существуют следующие способы сделать правильное сравнение.
- первое-это Корень-Среднее-Квадрат Разница #
чтобы получить меру того, насколько похожи два изображения, вы можете рассчитать среднеквадратическое (RMS) значение разницы между изображениями. Если изображения абсолютно идентичны, это значение равно нулю. Следующая функция использует разностную функцию, а затем вычисляет значение RMS из гистограммы результирующего изображение.
# Example: File: imagediff.py
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]))
- другое Точное Сравнение #
самый быстрый способ определить, имеют ли два изображения точно такое же содержимое, - это получить разницу между двумя изображениями, а затем вычислить ограничивающую рамку ненулевых областей на этом изображении. Если изображения идентичны, все пиксели в разностном изображении равны нулю, а функция ограничивающего поля возвращает значение None.
import ImageChops
def equal(im1, im2):
return ImageChops.difference(im1, im2).getbbox() is None
Я поддерживаю библиотеку Python под названием pyssim использует структурированное сходство (SSIM) метод сравнения двух изображений.
у него Нет привязок python, но perceptualdiff программа также удивительна при сравнении двух изображений - и довольно быстро.
Я не могу дать готовый ответ, но я не буду указывать вам (я думаю) в правильном направлении. Простой способ сравнения двух изображений - сделать хэш их двоичных представлений, а затем посмотреть, совпадают ли эти хэши. Одна из проблем с этим связана с хэш-функцией, которую вы хотите использовать, и вы должны искать ту, которая имеет низкие шансы на столкновения, а другая заключается в том, что файл изображения, вероятно, имеет метаданные, прикрепленные к исходной двоичной информации, поэтому вам придется посмотреть, как отключите эти метаданные, чтобы сравнить изображения только с использованием их двоичной информации. Кроме того, я не знаю наверняка, но, вероятно, двоичное представление изображения, закодированного в jpg, отличается от изображения, закодированного в png, поэтому вы должны знать об этом.