Python Forum
template matching: more than one template?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
template matching: more than one template?
#1
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)
Reply
#2
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... 
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Aligning a image to a template image robrod26 1 1,224 May-21-2022, 06:48 AM
Last Post: malikhussain

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020