Я работаю над школьным проектом.
Мне дали задание идентифицировать объекты при просмотре их с помощью камеры.
Видео
Изображение
Я решил попробовать template matching
:
from matplotlib import pyplot as plt
import cv2
template = cv2.imread('./frog.jpg') # read image as template
cap = cv2.VideoCapture('./frog.mov') # simulate camera input
height = template.shape[0]
width = template.shape[1]
while True:
ret, frame = cap.read() # read the current frame
if ret is False:
break
res = cv2.matchTemplate(frame, template, cv2.TM_CCORR_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
bottom_right = (top_left[0] + width, top_left[1] + height)
cv2.rectangle(frame,top_left, bottom_right, 255, 2)
match_found = False
for i in res:
if i.any() > 0.9999:
print ('match found')
match_found = True
break
if match_found:
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(frame,cmap = 'gray')
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.suptitle('TM_CCORR_NORMED')
plt.show()
Проблема в том, что почти все совпадает.
Как я могу заставить это работать?