Итак, у нас есть следующая функция, и она находит правильный шаблон, который соответствует рабочему изображению.
красный шаблон синий шаблон зеленый шаблон желтый
рабочее изображение шаблона
Код: Выделить всё
import cv2
red_template = cv2.imread('resources/temptest/red_template.png')
yellow_template = cv2.imread('resources/temptest/yellow_template.png')
blue_template = cv2.imread('resources/temptest/blue_template.png')
green_template = cv2.imread('resources/temptest/green_template.png')
work_image = cv2.imread('resources/temptest/work_image.png')
all_templates = [red_template,yellow_template,blue_template,green_template]
for template in all_templates:
result = cv2.matchTemplate(work_image,template,
method=cv2.TM_CCORR_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
threshold = 0.945
if max_val >= threshold:
print('found it')
break
else:
print('not found')
continue
Код: Выделить всё
'not found' 'not found' 'not found' 'found it'
Мой вопрос: как нам это сделать? выведите идентификатор шаблона, который успешно совпал.
Я размышлял над этим и пробовал несколько разных методов, таких как добавление возвращаемого результата или возвращаемого шаблона< /code> но ни один из них не дает мне измеримого объекта, и обычно при попытке я получаю следующую ошибку: чтобы сравнить вывод с одним из шаблонов:
ValueError: операнды не могут передаваться вместе с фигурами.
Поэтому мой вопрос снова заключается в том, как получим ли мы какой-то сопоставимый результат, который затем сможем использовать при необходимости (например, если совпадением был зеленый шаблон, то сделайте что-нибудь).
Подробнее здесь: https://stackoverflow.com/questions/792 ... -templates
Мобильная версия