模板匹配_目标检测

模板单个匹配

def all_operate(file1="lena.jpg",file2="face.jpg"):
    img =  cv.imread(file1,0)
    template =  cv.imread(file2,0)
    

    h,w = template.shape[:2]
    print (h,w)
    methods =[cv.TM_CCOEFF,cv.TM_CCOEFF_NORMED,cv.TM_CCORR,cv.TM_CCORR_NORMED,cv.TM_SQDIFF,cv.TM_SQDIFF_NORMED]

    method =["cv.TM_CCOEFF","cv.TM_CCOEFF_NORMED","cv.TM_CCORR","cv.TM_CCORR_NORMED","cv.TM_SQDIFF","cv.TM_SQDIFF_NORMED"]

    num=1
    fig = plt.figure(figsize=(10,25))#创建多个子图
    for meth in methods:
        img_ = img.copy()
        res = cv.matchTemplate(img_,template,meth)
        min_val,max_val,min_loc,max_loc = cv.minMaxLoc(res)

        if meth in [cv.TM_SQDIFF,cv.TM_SQDIFF_NORMED]:
            top_left = min_loc
        else:
            top_left = max_loc
        bottom_right = (top_left[0]+w,top_left[1]+h)
        cv.rectangle(img_,top_left,bottom_right,255,2)

        fig.add_subplot(3,4,num)
        plt.imshow(res,cmap="gray")
        plt.xticks([]),plt.yticks([])
        num+=1
        fig.add_subplot(3,4,num)
        plt.imshow(img_,cmap="gray")
        plt.xticks([]),plt.yticks([])
        plt.title(method[int(num/2-1)])
        num+=1
    plt.show()

在这里插入图片描述

模板多个匹配

def all_tem_match(file1="mario.jpg",file2="mario_coin.jpg"):
    img = cv.imread(file1,1)
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    template =  cv.imread(file2,0)
    h,w = template.shape[:2]
    res = cv.matchTemplate(gray,template,cv.TM_CCOEFF_NORMED)
    threshold = 0.8
    loc = np.where(res>=threshold)
    for pt in zip(*loc[::-1]):
        bottom_right = (pt[0]+w,pt[1]+h)
        cv.rectangle(img,pt,bottom_right,(0,0,255),2)
    
    cv.imshow("img",img)
    cv.waitKey(0)
    cv.destroyAllWindows()

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值