@Lord_kazu

У меня есть папка с картинками формата png и я хочу сравнить эти картинки с эталоном, мне нужен цикл для прогонки всех изображений, как реализовать?

#(название картинок *.png)

import cv2
import difflib
from matplotlib import pyplot as plt

# Функция вычисления хэша
def CalcImageHash(FileName):
image = cv2.imread(FileName) # Прочитаем картинку
resized = cv2.resize(image, (8, 8), interpolation=cv2.INTER_AREA) # Уменьшим картинку
gray_image = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY) # Переведем в черно-белый формат
avg = gray_image.mean() # Среднее значение пикселя
ret, threshold_image = cv2.threshold(gray_image, avg, 255, 0) # Бинаризация по порогу

# Рассчитаем хэш
_hash = ""
for x in range(8):
for y in range(8):
val = threshold_image[x, y]
if val == 255:
_hash = _hash + "1"
else:
_hash = _hash + "0"

return _hash

def CompareHash(hash1, hash2):
l = len(hash1)
i = 0
count = 0
while i < l:
if hash1[i] != hash2[i]:
count = count + 1
i = i + 1

if(count <= 10):
print(count) # разница
return count

hash1 = CalcImageHash('depth_data/etalon.png')
hash2 = CalcImageHash('depth_data/25.png') #мне нужно воткнуть сюда цикл
print(hash1)
print(hash2)
print(CompareHash(hash1, hash2))

img = plt.imread('depth_data/etalon.png')
img2 = plt.imread('depth_data/25.png')
plt.imshow(img2)

plt.show()
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
@GeneD88
QA
1. Посмотрите на модуль imagehash
2. Взять все png в папке: glob.glob('/*.png')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы