Python OpenCV-同一图像的多次出现,但可以';我找不到所有的,有些是重复的

Python OpenCV-同一图像的多次出现,但可以';我找不到所有的,有些是重复的,python,opencv,opencv3.0,opencv-python,Python,Opencv,Opencv3.0,Opencv Python,这是一个训练项目,我正在做一个游戏,学习一些OpenCV 所以我有这个 ,此图像和此代码: from time import sleep import pyautogui import cv2 from tkinter import Tk import re img_rgb = pyautogui.screenshot() img_rgb = np.array(img_rgb) img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRA

这是一个训练项目,我正在做一个游戏,学习一些OpenCV

所以我有这个 ,此图像和此代码:

from time import sleep
import pyautogui
import cv2
from tkinter import Tk
import re
   img_rgb = pyautogui.screenshot()
   img_rgb = np.array(img_rgb)
   img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
   template = cv2.imread("template.png", 0)

   w, h = template.shape[::-1]
   res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
   precision=0.85
   loc = np.where(res >= precision)
   count = 0
   total_currency=0
   for pt in zip(*loc[::-1]):  # Swap columns and rows
       cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
       center_x=pt[0]+w/2
       center_y=pt[1]+h/2
       count+=1
       total_currency+=get_stack() # function to get the sum of the numbers. In this case 4,10,5,10. No openCV is used here
   cv2.imwrite('res.png',img_rgb)
   print("Found",count,"Total currency: ",total_currency)
这是输出:

4
4
10
5
Found 4 Total currency: 23
和 .问题是它检测到两次4图像,一次是10图像,一次是5图像。我甚至不明白为什么,因为我有两张完全相同的10张图片,只检测到一张


我试着拍摄更好的模板照片,在不固定的情况下切换精度。这里的问题是什么?

很多时候,绘制
res
响应面都很有帮助。这有助于调试。您可能应该执行某种非最大值抑制。寻找示例实现。您的模板与其他部分太相似。它看起来像输入中区域的顶部,但它也会以较高的值匹配底部。如果使用与输入中非黑色图标相同大小的模板,可能会获得更好的匹配结果。此外,如果您使用想要检测的单元格的完整大小作为模板来掩盖黑色部分,它可能会提供更好的结果。很多时候,它有助于绘制
res
响应面。这有助于调试。您可能应该执行某种非最大值抑制。寻找示例实现。您的模板与其他部分太相似。它看起来像输入中区域的顶部,但它也会以较高的值匹配底部。如果使用与输入中非黑色图标相同大小的模板,可能会获得更好的匹配结果。此外,如果使用要检测的单元格的完整大小作为模板来遮罩黑色部分,则可能会获得更好的结果。