template matching: more than one template? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Data Science (https://python-forum.io/forum-44.html) +--- Thread: template matching: more than one template? (/thread-16757.html) |
template matching: more than one template? - jtl - Mar-13-2019 Hello i am very new to python and ML. I am trying to do some template mathing with opencv. I succeed doing template matching with one single template but how can I make it work with 2 or more templates? I guess I somehow have to insert all the tamplates in an array and then loop thru all of them while doing cv2.matchTemplate? img_bgr = cv2.imread('images/image1.png') img_gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) template = cv2.imread('templates/template1.png', 0) w, h = template.shape[::-1] result = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED) # threshold threshold = 0.8 loc = np.where(result >= threshold) for pt in zip(*loc[::-1]): cv2.rectangle(img_bgr, pt, (pt[0]+w, pt[1]+h), (0, 255, 255), 1) cv2.imshow('detected', img_bgr) cv2.waitKey(0) RE: template matching: more than one template? - scidam - Mar-14-2019 You are likely needed to write a generator that return templates, e.g. import glob, os def get_templates(path='./templates', template_mask='png'): for f in glob.glob(os.path.join(path, '**', '*.' + template_mask)): yield cv2.imread(f, 0) # now you can iterate over all templates for template in get_templates(): result = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED) # do some stuff... |