OpenCV——模板匹配Template_Match,最基本的目标搜索方式

原图像:
原图像
模板图像:
模板图像
cv.TM_SQDIFF_NORMED匹配结果:
由于是采用平方差的方式判断相似度,所以值越小越好(越暗越好)
在这里插入图片描述
在这里插入图片描述
采用cv.TM_CCORR_NORMED结果:
采用相似度进行匹配,因此值越大越好(亮)
在这里插入图片描述
在这里插入图片描述
采用cv.TM_CCOEFF_NORMED结果:
因为是相似系数,所以值越大越好(亮)
在这里插入图片描述
在这里插入图片描述
代码部分:

import numpy as np
import cv2 as cv


def template_match_demo(template, target):
    # OpenCV提供的模板匹配的方法,依次为“归一化平方差匹配”、“相关性匹配”以及“相关系数匹配”
    # 第一种方法越小越好,其余两种越大越好
    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]

    # 获取模板的尺寸信息
    template_h, template_w = template.shape[:2]

    # 进行匹配
    for method in methods:
        """
            image:需要匹配的图像
            template:模板
            method:匹配方法
            result:结果存放(可直接设置变量接收)
            mask:遮罩,先定匹配范围 
        """
        result = cv.matchTemplate(target, template, method)
        cv.imshow("result of"+str(method), result)

        # 获取结果中最大值或者最小值的位置以及值信息
        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
        print(min_val, " ", max_val, " ", min_loc, " ", max_loc, "\n")

        if method == cv.TM_SQDIFF_NORMED:
            # 如果使用平方差作为衡量标准,则需要的是最小值的坐标(该坐标为左上角的坐标)
            tl = min_loc
        else:
            # 否则需要最大值的坐标
            tl = max_loc
        # 计算得到右下角坐标
        br = (tl[0] + template_w, tl[1] + template_h)
        # 绘制框图进行标记
        """
            image:需要被绘制的图像
            p1, p2:左上角以及右下角的坐标
            color:颜色
            thickness:线的宽度
        """
        cv.rectangle(target, tl, br, color=(0, 0, 255), thickness=10)
        cv.imshow("match-"+str(method), target)


template = cv.imread("data/butterfly_template.jpg")
target = cv.imread("data/butterfly.jpg")
template_match_demo(template, target)

cv.waitKey(0)
cv.destroyAllWindows()
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值