I tried to matchtemplate using OpenCV2.
This is the template and the screen I'm searching in:
This is the code i used to match template:
import cv2
import numpy as np
img_bgr = cv2.imread("screen.png")
img_gray = cv2.cvtColor(img_bgr,cv2.COLOR_BGR2GRAY)
template = cv2.imread("red.png",0)
w,h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.4
loc = np.where(res>=threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_bgr,pt,(pt[0]+w,pt[1]+h),(0,255,255),2)
cv2.imshow("detected",img_bgr)
cv2.waitKey(0)
cv2.imwrite('img_bgr.png',img_bgr)
cv2.imwrite('gray_image.png',img_gray)
When I use threshold of 0.4 I get this as a result:
Even though I'm using a red pawn template, opencv2 only matches with the blue pawns on 0.4 threshold.