Как сравнить 2 картинки в python: подробное руководство с примерами и кодом

Как сравнить 2 картинки в Python?

Сравнение двух картинок в Python можно выполнить с помощью библиотеки PIL (Python Imaging Library) и модуля imagehash. Вот пример, который поможет вам сравнить две картинки:

from PIL import Image
import imagehash

# Открываем и считываем первую картинку
img1 = Image.open('image1.jpg')
hash1 = imagehash.average_hash(img1)

# Открываем и считываем вторую картинку
img2 = Image.open('image2.jpg')
hash2 = imagehash.average_hash(img2)

# Сравниваем хэши и получаем расстояние (четность, отличие)
distance = hash1 - hash2

if distance == 0:
    print("Картинки идентичны.")
else:
    print("Картинки различны.")

В приведенном коде мы сначала открываем и считываем две картинки с помощью модуля Image из библиотеки PIL. Затем мы вычисляем хэш каждой картинки с помощью функции average_hash из модуля imagehash. И наконец, сравниваем хэши и выводим результат сравнения.

Убедитесь, что у вас установлены библиотеки PIL и imagehash перед запуском этого кода.

Надеюсь, это поможет вам сравнить две картинки в Python!

Детальный ответ

Как сравнить 2 картинки в Python

Сравнение двух картинок может быть полезным для множества задач, начиная от определения разницы между изображениями до поиска дубликатов. В Python существует несколько способов выполнения этой операции, включая использование библиотеки PIL (Python Imaging Library) и OpenCV. Давайте рассмотрим каждый из них.

Использование библиотеки PIL

Библиотека PIL является мощным инструментом для работы с изображениями в Python. Для сравнения двух картинок вам понадобится следующий подход:

  1. Загрузите оба изображения, используя функцию Image.open() из модуля PIL.
  2. Преобразуйте каждое изображение в черно-белый формат, чтобы упростить сравнение. Для этого вы можете использовать метод convert('L').
  3. Преобразуйте каждое изображение в массив пикселей, используя метод numpy.asarray().
  4. Вычислите абсолютную разницу между двумя массивами пикселей, используя функцию numpy.abs().
  5. На основе полученного массива разницы вы можете принять решение о том, насколько сильно отличаются две картинки. Например, вы можете посчитать среднее значение разницы или использовать пороговое значение для определения, считать ли изображения идентичными или разными.

from PIL import Image
import numpy as np

# Загрузка исходных изображений
image1 = Image.open("image1.jpg").convert('L')
image2 = Image.open("image2.jpg").convert('L')

# Преобразование изображений в массивы пикселей
pixels1 = np.asarray(image1)
pixels2 = np.asarray(image2)

# Вычисление абсолютной разницы
diff = np.abs(pixels1 - pixels2)

# Принятие решения о различии картинок
threshold = 10
if np.mean(diff) <= threshold:
    print("Изображения идентичны")
else:
    print("Изображения разные")
    

Использование библиотеки OpenCV

OpenCV является еще одной популярной библиотекой, которая предоставляет множество функций для работы с изображениями и компьютерным зрением. Для сравнения двух картинок вам понадобится следующий подход:

  1. Загрузите оба изображения, используя функцию cv2.imread() из модуля cv2.
  2. Преобразуйте каждое изображение в черно-белый формат, чтобы упростить сравнение. Для этого вы можете использовать функцию cv2.cvtColor().
  3. Вычислите абсолютную разницу между двумя изображениями, используя функцию cv2.absdiff().
  4. Преобразуйте полученное изображение с помощью функции cv2.cvtColor() в цветное изображение, чтобы увидеть различия более наглядно.
  5. На основе полученного изображения разницы вы можете принять решение о том, насколько сильно отличаются две картинки. Например, вы можете посчитать сумму абсолютных различий пикселей или использовать пороговое значение для определения, считать ли изображения идентичными или разными.

import cv2

# Загрузка исходных изображений
image1 = cv2.imread("image1.jpg")
image2 = cv2.imread("image2.jpg")

# Преобразование изображений в черно-белый формат
gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)

# Вычисление абсолютной разницы
diff = cv2.absdiff(gray1, gray2)

# Преобразование изображения разницы в цветное изображение
diff_color = cv2.cvtColor(diff, cv2.COLOR_GRAY2BGR)

# Принятие решения о различии картинок
threshold = 10000
if cv2.sumElems(diff)[0] <= threshold:
    print("Изображения идентичны")
else:
    print("Изображения разные")
    

Заключение

Сравнение двух картинок в Python может быть выполнено с использованием библиотек PIL и OpenCV. Каждый из этих подходов имеет свои преимущества, и выбор зависит от ваших конкретных потребностей. В любом случае, описанные выше методы предоставят вам инструменты для сравнения двух изображений с помощью Python.

Видео по теме

Как сравнить два или более фото или изображений одновременно и синхронно ?

Cравнениe изоражений с Python + Pillow

Изучение Python OpenCV / Урок #2 - Работа с изображениями и видео

Похожие статьи:

Как отправить сообщение на телефон через python: подробный гайд с примерами и кодом

Как определить, что число двузначное в Python? 🔎

🐍 Как разрабатывать приложения на питоне: простые инструкции для начинающих

Как сравнить 2 картинки в python: подробное руководство с примерами и кодом

Как написать трояна на питоне: подробное руководство для начинающих

Как правильно завершить оператор if в Python?

Как одновременно считывать несколько переменных в python?