Я изучаю opencv и работаю над некоторыми тестовыми примерами для исследования, но проблема в том, что я получаю сходство изображения, включая черную область изображения. Моя цель - проверить сходство изображений и поместить каждую букву в одну и ту же папку (например, все изображения с буквой «А» должны находиться в одной папке, а все изображения с буквой «В» должны находиться в одной папке). цель я нахожу изображение сходства. проблема в черной области на моих изображениях.
это изображения, которые у меня есть
теперь я хочу найти сходство между этими изображениями и разместить их соответственно
проблема в моем коде состоит в том, что все изображения имеют сходство более 0,90, что не должно быть возможным для всех изображений
это мой код
def get_similarity(img_1, img_2):
pix1 = img_1.convert('L').load()
pix2 = img_2.convert('L').load()
match_count = 0
pix1_white_count = 0
pix2_white_count = 0
for y in range(0, img_1.height):
for x in range(0, img_1.width):
if pix1[x, y] == pix2[x, y] and pix2[x, y] == 255:
match_count += 1
if pix2[x, y] == 255:
pix2_white_count += 1
if pix1[x, y] == 255:
pix1_white_count += 1
# no of pixels have more than 10% variation
if float(pix1_white_count - pix2_white_count) / float(pix1_white_count + pix2_white_count) >= 1.5:
return 0
return float(match_count)/float(pix2_white_count)
Необходимо найти сходство только по белой области изображения или вы можете сказать между текстом
al go здесь я работаю над этим, подсчитывает белые пиксели на обоих изображениях и затем находит изменение соответственно
, но это дает индекс вне диапазона в этой строке
if pix1[x, y] == pix2[x, y] and pix2[x, y] == 255: