13. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()
1. 什么是模板匹配
模板匹配,就是在整个图像区域发现与给定子图像匹配的小块区域,需要模板图像T和待检测图像-源图像S。
工作方法:在待检测的图像上,从左到右,从上倒下计算模板图像与重叠子图像匹配度,匹配度越大,两者相同的可能性越大。
2. 实现函数-cv2.matchTemplate()、cv2.minMaxLoc()
2.1 cv2.matchTemplate()-模板匹配
- 参数如下:cv2.matchTemplate(image, templ, method, result=None, mask=None)
- 参数说明: 1. image 待检测图像 2. templ 模板图像 3. 比较方法,有以下几种:
CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。
CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。
CV_TM_CCOEFF 相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。
CV_TM_SQDIFF_NORMED 归一化平方差匹配法CV_TM_CCORR_NORMED 归一化相关匹配法
CV_TM_CCOEFF_NORMED 归一化相关系数匹配法
关于匹配方法,使用不同的方法产生的结果的意义可能不太一样,有些返回的值越大表示匹配程度越好,而有些方法返回的值越小表示匹配程度越好。
2.2 cv2.minMaxLoc()-获取匹配后的结果
- 参数:cv2.matchTemplate()的返回值
- 返回值:求出匹配结果的最小值,最大值,并得到最大值,最小值的索引
3. 实现代码:
import cv2 as cv
import numpy as np# 模板匹配,就是在整个图像区域发现与给定子图像匹配的小块区域,
# 需要模板图像T和待检测图像-源图像S
# 工作方法:在待检测的图像上,从左到右,从上倒下计算模板图像与重叠子图像匹配度,
# 匹配度越大,两者相同的可能性越大。
def template_demo():tpl = cv.imread("../images/rabbit.jpg")target = cv.imread("../images/CrystalLiu22.jpg")# cv.imshow("template", tpl)# cv.imshow("target", target)methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED] # 三种模板匹配方法th, tw = tpl.shape[:2] # 获取模板的高、宽for md in methods:print(md)result = cv.matchTemplate(target, tpl, md) # 得到匹配结果min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result) # if md == cv.TM_SQDIFF_NORMED: # cv.TM_SQDIFF_NORMED最小时最相似,其他最大时最相似tl = min_locelse:tl = max_locbr = (tl[0] + tw, tl[1] + th)cv.rectangle(target, tl, br, (0, 0, 255), 2) # tl为左上角坐标,br为右下角坐标,从而画出矩形cv.imshow("match-"+np.str(md), target)if __name__ == '__main__':template_demo()cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口cv.destroyAllWindows() # 关闭所有窗口
13. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()相关推荐
- 【OpenCV3】模板匹配——cv::matchTemplate()详解
模板匹配通常被用于目标检测.相似度分析中,opencv2和opencv3中提供了一个专门用于模板匹配的函数--cv::matchTemplate(),下面就对该函数进行详细的介绍. 先从一个实际的例子 ...
- Opencv(C++)笔记--模板匹配cv::matchTemplate()和最值计算cv::minMaxLoc()
目录 1--模板匹配 1-1--OpenCV API 1-2--六种匹配方法 1-3--代码实例 2--最值计算 2-1--OpenCV API 1--模板匹配 使用模板图像与原图像进行匹配,Open ...
- opencv java match_OpenCV模板匹配函数matchTemplate详解
参考文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matchin ...
- OpenCV3学习(8.3)模板匹配函数matchTemplate详解
opencv实现了一部分通过模板与目标图像进行寻找最佳匹配的方面matchTemplat();这个方法网上有很多讲解,基本思想是将模板图像在目标图像上滑动逐一对比,通过统计的基本方法进行匹配,比如方差 ...
- OpenCV笔记:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 与 绘制矩形 cv2.rectangle() 方法介绍
导读 模板匹配是用来在一副大图中搜寻查找模版图像位置的方法.绘制矩形是用来将模版图像的匹配结果展示出来的方法. 模板匹配实现简单(2~3行代码),计算效率高,不需要执行阈值化.边缘检测等操作来生成二值 ...
- OpenCV-Python:模板匹配
啥叫模板匹配 模板匹配就是在大图中找小图,也就说在一幅图像中寻找另一幅模板图像的位置: OpenCV使用 cv2.matchTemplate() 实现模板匹配. import cv2 import n ...
- OpenCV中的图像处理 —— 傅里叶变换+模板匹配
OpenCV中的图像处理 -- 傅里叶变换+模板匹配 现在也在逐渐深入啦,希望跟大家一起进步越来越强 目录 OpenCV中的图像处理 -- 傅里叶变换+模板匹配 1. 傅里叶变换 1.1 Numpy实 ...
- OpenCV 第七章 模板匹配和图像分割
一.模板匹配 定义:让模板图像在输入图像中滑动逐像素遍历整个图像进行比较,查找出与模板图像最匹配的部分. 单目标匹配 定义:输入图像中只存在一个可能匹配结果 基本格式如下: result = cv2. ...
- Python-OpenCV 笔记9 -- 模板匹配
Python-OpenCV 笔记9 – 模板匹配 1.模板匹配:matchTemplate() 函数原型: matchTemplate(image, templ, method[, result[, ...
最新文章
- OWASP top 10 (2017) 学习笔记--失效的身份验证
- C++继承与派生(原理归纳)
- 【深度学习】陶大程等人编写!最新41页深度学习理论综述
- 【Qt】数据库实战之QSqlTableModel模型
- sql语句中`和'两个符号的区别
- 计算机公开课教学反思,语文公开课教学反思
- OpenXLSX 中文字段读取问题
- Django项目--登录判断装饰器
- 《javascript高级程序设计》读书笔记1
- ubuntu配置硬盘开机自动挂载
- P1273 有线电视网 树形dp
- 剑指offer面试题[8]-旋转数组的最小数字
- ACL'22 | 一文解读复旦黄萱菁、邱锡鹏等老师NLP实验室的12篇长文
- Microsoft Remote Desktop 10 - 微软官方免费远程桌面控制 Windows 的软件 APP
- Hbase GC调优原理分析
- 想要做网页游戏怎么办 ?PixiJs 篇(四)
- Android SDK 目录和作用的分析详解
- 基于NRF24L01的CAN数据透传
- 关于RNN理论和实践的一些总结
- 安装MS SQL Server2000“以前的某个程序安装已在安装计算机上创建挂起的文件操作”的解决办法
热门文章
- polsarpro滤波后没有bmp文件_win10系统右键新建菜单中没有bmp如何解决
- Linux创建和删除目录
- jsp中c标签的详细使用
- python中unicode函数的包_Python unicodeutil包_程序模块 - PyPI - Python中文网
- jsp及Servlet经典面试题以及答案
- Linux-Centos7防火墙配置
- 内存管理(15)——UI(20)——DeleteObject
- cat3速度 rj45_常用RJ45网线的规格及型号总结
- 推荐5款Windows桌面效率工具
- oppo禁用android系统通知栏,OPPO全机型手机去除状态栏ROOT警告-安卓刷机教程