Python 3.6.7 - OpenCV(4.1.2) 模板匹配

Python 3.6.7 - OpenCV(4.1.2) Template matching

我有这个代码(在文档中使用)用于模板匹配:

img_rgb = cv2.imread('mta-screen_2020-01-01_12-07-24.png.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
path = 'D:\!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_!Piton\MTA_pyautogui\TrainImgs' + chr(92) + '1.png'
template = cv2.imread(path, 0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = nm.where(res >= threshold)
for pt in zip(*loc[::-1]):
    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv2.imwrite('res.png', img_rgb)

所以,我有这张图片(用于检测),它在右下角有速度 : 我有这个模板 (速度的第一个字符),它位于上面大图的右下角:

我有输出错误:

Traceback (most recent call last):
  File "D:/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!_!Piton/MTA_pyautogui/main.py", line 38, in <module>
    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

文件树:

所以,我的目标是根据每个数字制作一个模板并检测火车的速度。我真的不在乎方法或速度我只想要一个告诉火车速度的输出。因此,为此,我想使用 OpenCV 模板匹配。

img_rgb = cv2.imread('mta-screen_2020-01-01_12-07-24.png.png')

如果您看到有两个 .png 而不是一个,我就找到了答案。 现在,我正试图解决这个问题,因为它并没有真正检测到我需要什么,所以我现在正试图缩小图像,使右下角只可见。