根据此链接,我正在尝试使用 opencv python 在图像中查找多个模板。
但问题是,单个对象返回的多个点在位置上略有不同。像这样的东西:
我不想使用,cv2.minMaxLoc()因为图像中有多个模板。我写了一个删除平仓的函数,但我想知道这个问题有什么简单的解决方案吗?谢谢。
python opencv image-processing computer-vision template-matching
我想检测一个简单的 2D 棋盘上的所有棋子。问题是,我的代码只检测黑色方块上的棋子。我需要检测到所有白色棋子。这是我的设置:
代码:
import cv2
import numpy as np
import imutils
def main():
img = cv2.imread('full_board.png', 0)
# Piece templates:
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2GRAY)
pawn_white_template = cv2.imread('wp.png', 0)
cv2.imshow("Template", pawn_white_template)
cv2.waitKey(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)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
更改阈值对我没有帮助。我不确定为什么它只检测黑色方形棋子。任何想法如何检测所有典当?