【问题标题】:OpenCV Pawn Chess piece is not detecting?OpenCV Pawn 棋子未检测到?
【发布时间】:2018-09-28 18:20:15
【问题描述】:

我在检测白棋子时遇到了麻烦。这有点奇怪,因为它每隔一秒检测一次白棋子。如果我下未检测到的棋子,它就会被检测到。

这就是我在 Stackoverflow 中询问的原因,因为我找不到任何帮助或无法向自己解释。

一般信息: 我在 Lichess 玩所有默认设置和样式。我的白色典当图片也是一个透明的白色 png 文件(50px x 50px)。 阈值为 0.6,因为我得到了最好的结果。如果我减少它检测到的白色棋子的数量更少,如果我增加它检测黑色棋子的数量。

# 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)

Picture of the result detected Window

我希望你们能帮助我。如果您需要任何额外的信息,请询问我。

最好的问候

托比亚斯

【问题讨论】:

  • 请发布示例图片。
  • @AlexanderReynolds 好的
  • 我遇到了和你完全相同的问题(字面意思是一样的;国际象棋而不是检测棋子,只显示黑色方块中的棋子)。你是怎么解决这个问题的?

标签: python python-3.x opencv object-detection chess


【解决方案1】:

我已经下载了您的图片并对其进行了编辑以删除黄色方块,并使用油漆制作了我自己的模板(请不要评判我)。然后我尝试了你的代码,它运行良好。很难说为什么它在你的情况下不起作用,但如果我猜我不得不说它与你的模板有关。当你说你有一张透明的 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)

结果:

我的原图:

我的模板:

【讨论】:

  • 我认为这是因为图像的大小。我也发布了我的模板
  • 我认为在 matchTemplate 中,大小必须准确。否则,您将不得不调整您的投资回报率。或者只是调整模板的大小
  • 查看这篇文章了解多尺度pyimagesearch.com/2015/01/26/…
猜你喜欢
  • 2023-01-31
  • 2023-01-18
  • 1970-01-01
  • 2016-05-26
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
相关资源
最近更新 更多