Я пытаюсь обнаружить некоторые простые «красные узоры» на изображении. Вот алгоритм, которому я следую: 1) отфильтровать все другие цвета, а не «красный» и создать черно-белое изображение. Я использовал «cvtColor» с соответствующей маской, а затем применил «GaussianBlur», чтобы уменьшить шум. Пока все в порядке.
2) Я использовал функцию «matchTemplate» следующим образом, чтобы обнаружить «стрелку» на изображении.
Проблема: если на фотографии есть шаблон "стрелка", он определяется правильно. Но когда его нет на фото, алгоритм обнаруживает какие-то другие формы, что является ошибкой. Может ли кто-нибудь изменить код, чтобы, когда шаблона стрелки не было на картинке, ничего не обнаруживалось. Вот мой код:
template = cv2.imread(address,0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(self.image['blured'], template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(self.image['blured'],top_left, bottom_right, 255, 2)
cv2.rectangle(self.image['normal'], top_left, bottom_right, 255,2)
Мое шаблонное изображение, которое я вырезал точно из основного фото:
Кто-нибудь может обнаружить мою ошибку? Я новичок в обработке изображений. Заранее спасибо.