I am a newbie in Image Processing and learning about Template Matching by getting some help from OpenCV documentation, but I didn't understand some lines of the code.
Here is the code:
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('coin.png', 0)
w, h = template.shape[::-1]
count = 0
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):
count += 1
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
cv2.imwrite('res.png', img_rgb)
print(count)
The objective is to template match the coin in the super mario map.
My Questions :
1. In the loop for pt in zip(*loc[::-1]):
I put a counter and when I print it, it prints 65, whereas the number of coins is only 19.
2. What is the function of the variable threshold=0.8
, when I change its value, the resulting image is changed.
Can anyone help me to answer my question? Thank you in advance.