Найти крестовину на фотографии и определить ее местоположение
Всех приветствую. Имеется такая фотография, нужно найти на ней эту крестовину и определить ее местоположение (x, y)
Изображение:
То, что мне нужно:
То, что я уже пробовал (и это работает очень криво):
result = cv2.cvtColor(result, cv2.COLOR_BGR2GRAY)
(contours, _) = cv2.findContours(result, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for rect in contours:
(x, y, w, h) = cv2.boundingRect(rect)
rect = cv2.minAreaRect(rect)
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(result, [box], 0, (255, 0, 0), 2)
print(x, y)
cv2.imshow('1', result)
Ответы (1 шт):
Автор решения: Shamus Rezol
→ Ссылка
import cv2
file = "4qUkj.jpg"
template_file = "template.png"
image = cv2.imread(file)
template = cv2.imread(template_file)
res = cv2.matchTemplate(image, template, cv2.TM_SQDIFF_NORMED)
(_min_val, _max_val, min_loc, _max_loc) = cv2.minMaxLoc(res)
print(min_loc)
# (141, 13)
matchtemplate предельно подходит вам. Несколько очевидных вещей: он ищет участок на image, который наиболее похож на шаблон (template).

