Python OpenCV典当棋子未检测到?
我很难发现当押的白色棋子。这有点奇怪,因为它能检测到每一秒的白色棋子。如果我玩未被发现的棋子,它就会被发现 这就是为什么我在Stackoverflow询问的原因,因为我找不到任何帮助或无法向自己解释 一般信息: 我在Lichess玩所有的默认设置和风格。我的白色爪子图片是一个透明的白色png文件(50px 50px)。 阈值为0.6,因为我得到了最好的结果。如果我减少数量,它会检测到更少的白色棋子,如果我增加数量,它会检测到黑色棋子Python OpenCV典当棋子未检测到?,python,python-3.x,opencv,object-detection,chess,Python,Python 3.x,Opencv,Object Detection,Chess,我很难发现当押的白色棋子。这有点奇怪,因为它能检测到每一秒的白色棋子。如果我玩未被发现的棋子,它就会被发现 这就是为什么我在Stackoverflow询问的原因,因为我找不到任何帮助或无法向自己解释 一般信息: 我在Lichess玩所有的默认设置和风格。我的白色爪子图片是一个透明的白色png文件(50px 50px)。 阈值为0.6,因为我得到了最好的结果。如果我减少数量,它会检测到更少的白色棋子,如果我增加数量,它会检测到黑色棋子 # Standard settings img_rgb = c
# Standard settings
img_rgb = cv2.cvtColor(original_img,cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)
# White Pawn Template
pawn_white_template = cv2.imread("chess_pieces_template/pawn_white.png",0)
w_pawn_white, h_pawn_white = pawn_white_template.shape[::-1]
res_pawn_white = cv2.matchTemplate(img_gray,pawn_white_template,cv2.TM_CCOEFF_NORMED)
threshhold = 0.6
loc = np.where(res_pawn_white >= threshhold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb,pt,(pt[0]+w_pawn_white, pt[1]+h_pawn_white),(0,255,255),1)
cv2.imshow('detected',img_rgb)
我希望你们能帮助我。如果你想要更多的信息,请问我
致意
Tobias我已经下载了你的照片,并对其进行了编辑,删除了黄色方块,制作了我自己的模板,两者都是用油漆完成的(请不要评判我)。然后我尝试了你的代码,效果很好。很难说为什么它在你的案例中不起作用,但如果我猜我不得不说它与你的模板有关。当你说你有一个透明的png图片是指它是完全透明的(甚至在黑色边框内)还是仅仅是周围的?如果第一种情况为真,尝试制作一个中间填充了白色像素的模板,就像原始图像一样 您的代码:
import cv2
import numpy as np
img = cv2.imread('pawn.png')
# Standard settings
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)
# White Pawn Template
pawn_white_template = cv2.imread("pawn_white2.png",0)
w_pawn_white, h_pawn_white = pawn_white_template.shape[::-1]
res_pawn_white = cv2.matchTemplate(img_gray,pawn_white_template,cv2.TM_CCOEFF_NORMED)
threshhold = 0.6
loc = np.where(res_pawn_white >= threshhold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb,pt,(pt[0]+w_pawn_white, pt[1]+h_pawn_white),(0,255,255),1)
cv2.imshow('detected',img_rgb)
结果:
我的原始img:
我的模板:
请发布示例图像。@Alexander Reynolds okI的问题与您完全相同(字面上是一样的;下棋时不检测棋子,只显示暗格中的棋子)。你是怎么解决的?我想这是因为图像的大小。我发布了我的模板,我认为在matchTemplate中,这个尺寸必须是精确的。否则,您将不得不调整您的投资回报率。或者简单地调整模板的大小查看这篇文章了解多尺度