Как вы сравниваете два изображения в python, чтобы вернуть числовую разницу и прошедшее время?

#python #opencv #image-processing #imagemagick #image-comparison

#python #opencv #обработка изображений #imagemagick #сравнение изображений

Вопрос:

  1. числовая разница ожидается как положительная или отрицательная с десятичными знаками
  2. сравните внешний вид каждого изображения, а не их двоичное содержимое

например:
file1.png amp; file2.gif
разница 0.23
прошедшее время 0.843

Я пытался

 
from PIL import Image
from PIL import ImageChops

...

one = Image.open("file1.png")  
two = Image.open("file2.gif")  
diff = ImageChops.difference(one, two)  
print(diff)  

  

Но ImageChops не работает для сравнения файлов .gif и .png. Ошибка

 
python3.8/site-packages/PIL/ImageChops.py", line 102, in difference  
    return image1._new(image1.im.chop_difference(image2.im))  
ValueError: images do not match  

  

Будет imagemagick или numpy будет работать? должен поддерживать .png, .gif (.jpg, .bmp являются необязательными)

Комментарии:

1. Вы уверены, что ошибка связана с разными форматами файлов? Или может быть, что изображения имеют разный размер или используют другой формат цвета или одну из многих других возможных проблем?

2. Попробуйте запустить print(one.format, one.size, one.mode) и то же самое для второго изображения.

3. попробуйте cv2.matchTemplate()

Ответ №1:

Попробуйте распечатать режимы изображений.

 print(one.mode)
print(two.mode)
  

Если эти два режима != не равны друг другу, то он может взорваться, как вы видите.