相关疑难解决方法(0)

OpenCV Python中与多个对象的模板匹配

根据此链接,我正在尝试使用 opencv python 在图像中查找多个模板。

但问题是,单个对象返回的多个点在位置上略有不同。像这样的东西:

在此处输入图片说明

我不想使用,cv2.minMaxLoc()因为图像中有多个模板。我写了一个删除平仓的函数,但我想知道这个问题有什么简单的解决方案吗?谢谢。

python opencv image-processing computer-vision template-matching

4
推荐指数
1
解决办法
4901
查看次数

如何在 OpenCV 中模板匹配简单的 2D 形状?

我想检测一个简单的 2D 棋盘上的所有棋子。问题是,我的代码只检测黑色方块上的棋子。我需要检测到所有白色棋子。这是我的设置:

棋盘(full_board.png): 在此处输入图片说明

典当 ( wp.png): 在此处输入图片说明

预期输出(检测所有 pawn): 在此处输入图片说明

实际输出(并非所有 pawn 都被检测到): 在此处输入图片说明

代码:

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)

更改阈值对我没有帮助。我不确定为什么它只检测黑色方形棋子。任何想法如何检测所有典当?

python opencv image-processing

3
推荐指数
1
解决办法
1306
查看次数