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

1

Я пытаюсь написать программу на Python (с OpenCV), которая сравнивает 2 изображения, показывает разницу между ними, а затем информирует пользователя о проценте разницы между изображениями. Я уже сделал это, чтобы он генерировал.jpg, показывающий разницу, но я не могу понять, как заставить его рассчитать процент. Кто-нибудь знает как это сделать?

Заранее спасибо.

Теги:
opencv

2 ответа

0
Лучший ответ

Вот простая идея, которую вы можете приспособить. Но всегда убедитесь, что сравниваемые изображения имеют одинаковую форму.

Код:

img1 = cv2.imread('dog.jpg', 0)
img2 = cv2.imread('cat.jpg', 0)

#--- take the absolute difference of the images ---
res = cv2.absdiff(img1, img2)

#--- convert the result to integer type ---
res = res.astype(np.uint8)

#--- find percentage difference based on number of pixels that are not zero ---
percentage = (numpy.count_nonzero(res) * 100)/ res.size
  • Если img1 и img2 схожи, большинство пикселей в res будут 0 приведет к меньшему проценту.
  • Если img1 и img2 разные, этот процент будет выше.

Примечание. Я показал изображение с одним каналом, и его можно увеличить для многоканальных изображений.

0

Вам нужно будет рассчитать это самостоятельно. Вам понадобится количество разных пикселей и размер исходного изображения, а затем простая математика: (diferentPixelsCount/(mainImage.width * mainImage.height))*100

Ещё вопросы

Сообщество Overcoder
Наверх
Меню