所以我正在开发一个将屏幕截图与模板图像进行比较的程序。我完成了图像识别代码(至少大部分(据我所知)),但它不断得到误报。现在我正在使用 CV_TM_CCOEFF,但我仍然不完全理解这些是如何工作的(我数学很烂,这是一个朋友推荐的)如果我碰巧已经是正确的人,任何关于这方面的建议将不胜感激。代码 :
import pyautogui as cpt
import cv2
import imutils
import time
time.sleep(3)
def show(x):
cv2.imshow(x,x)
cv2.waitKey(0)
path2=r"C:\Users\assaw\OneDrive\Desktop\projectpy\0.png"
template=cv2.imread(path2)
w=template.shape[0]
h=template.shape[1]
method=5
a=cpt.screenshot(region=(70,40, 100,400))
a = cv2.cvtColor(np.array(a),cv2.COLOR_RGB2BGR)
cv2.imwrite("picture.png",a)
img= cv2.imread("picture.png")
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left=max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(res,top_left, bottom_right, 100, 1)
cv2.imwrite("local.png",res)
im= cv2.imread("local.png")
show(a)
show(im)
附带说明一下,如果有人可以解释这行代码的工作原理,将不胜感激
top_left=max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(res,top_left, bottom_right, 100, 1)
提前致谢!