Я читал документы о сопоставлении шаблонов с opencv и python, а в последней части о совпадении шаблонов с несколькими объектами код обнаружил 19 монет на мариовом изображении, но можно ли подсчитать количество объектов, обнаруженных с помощью некоторых функция на python, например len() или любой opencv-метод?Как подсчитать количество обнаруженных объектов с помощью сопоставления шаблонов?
Вот код показал на уроке: http://docs.opencv.org/3.1.0/d4/dc6/tutorial_py_template_matching.html
Template Matching Код:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img_rgb = cv2.imread('mario.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.png',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv2.imwrite('res.png',img_rgb)
И результат: Mario Bros & Coins
Итак, есть ли способ подсчитать монеты, обнаруженные на изображении, и распечатать номер на терминале? Что-то вроде:
The Template Matching code showed before...
print "Function that detect number of coins with template matching"
>>> 19
Покажите нам, что вы пробовали. – DimKoim
См. Этот [вопрос] (http://stackoverflow.com/q/33990259/1628638). Однако ответ не дает правильного решения вопроса «65 против 19» в вопросе. Достаточно надежное решение - не считать совпадений, которые очень близки к предыдущему матчу. (Если вы предоставите свои входные изображения, людям будет проще их кодировать). –