OpenCV(二十)模板匹配

目录

一、基础理论

1、作用与过程

2、原理

3、函数matchTemplate

二、代码

三、效果

参考资料


一、基础理论

1、作用与过程

        所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域,该算法的输入包括模板图片,整个任务的思路就是:按照滑窗的思路不断的移动模板图片计算其与图像中对应区域的匹配度最终将匹配度最高的区域选择为最终的结果

2、原理

如果输入图像的大小为(WxH),而模板图像的大小为(wxh),则输出图像的大小将为(W-w + 1,H-h + 1)。得到结果后,可以使用cv.minMaxLoc()函数查找最大/最小值在哪,将其作为矩形的左上角,并以(w,h)作为矩形的宽度高度。该矩形是您模板的区域

3、函数matchTemplate

cv2.matchTemplate(image, templ, method, result=None, mask=None)

image: 输入图像
templ: 输入模板
method: 方法
        TM_SQDIFF: 计算平方差, 计算出来的值越小, 越相关
        TM_CCORR: 计算相关性, 计算出来的值越大, 越相关
        TM_CCOEFF: 计算相关系数, 计算出来的值越大, 越相关
        TM_SQDIFF_NORMED: 计算归一化平方不同, 计算出来的值越接近 0, 越相关
        TM_CCORR_NORMED: 计算归一化相关性, 计算出来的值越接近 1, 越相关
        TM_CCOEFF_NORMED: 计算归一化系数, 计算出来的值越接近 1, 越相关

二、代码

#模板匹配
import cv2
import os

# 1、读取图片 并转化为灰度图(不可以用彩图匹配)
img = cv2.imread("Resource/test11.jpg")

# 2、读取模板
template = cv2.imread("Resource/template.jpg")
w, h, c = template.shape        #获得模板长宽

# 3、模板匹配
rectangle = cv2.matchTemplate(img, template, cv2.TM_CCOEFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(rectangle)
#最小值    最大值   最小值坐标  最大值坐标

# 4、获取匹配模块的左上角和右下角
top_left = max_loc                              #左上角
bottom_right = (top_left[0]+w, top_left[1]+h)   #右下角

# 5、画矩形并显示
cv2.rectangle(img, top_left, bottom_right, (0,0,255), 2)
cv2.imshow("matching", img)

cv2.waitKey(0)
cv2.destroyAllWindows()

三、效果

原图         模板: 

匹配结果:

  

拓展∶模板匹配不适用于尺度变换视角变换后的图像,这时我们就要使用关键点匹配算法,比较经典的关键点检测算法包括SIFTSURF等,主要的思路是首先通过关键点检测算法获取模板和测试图片中的关键点﹔然后使用关键点匹配算法处理即可,这些关键点可以很好的处理尺度变化、视角变换、旋转变化、光照变化等,具有很好的不变性。

参考资料

https://iamarookie.blog.csdn.net/article/details/119096602

https://www.bilibili.com/video/BV1Fo4y1d7JL?p=39&spm_id_from=pageDriver

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_(*^▽^*)_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值