Я пытаюсь написать программу на Python (с OpenCV), которая сравнивает 2 изображения, показывает разницу между ними, а затем информирует пользователя о проценте разницы между изображениями. Я уже сделал это, чтобы он генерировал.jpg, показывающий разницу, но я не могу понять, как заставить его рассчитать процент. Кто-нибудь знает как это сделать?
Заранее спасибо.
Вот простая идея, которую вы можете приспособить. Но всегда убедитесь, что сравниваемые изображения имеют одинаковую форму.
Код:
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
разные, этот процент будет выше.Примечание. Я показал изображение с одним каналом, и его можно увеличить для многоканальных изображений.
Вам нужно будет рассчитать это самостоятельно. Вам понадобится количество разных пикселей и размер исходного изображения, а затем простая математика: (diferentPixelsCount/(mainImage.width * mainImage.height))*100