opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)
1、目标匹配函数:cv2.matchTemplate()
res=cv2.matchTemplate(image, templ, method, result=None, mask=None)
image:待搜索图像
templ:模板图像
result:匹配结果
method:计算匹配程度的方法,主要有以下几种
method | 含义 |
---|---|
CV_TM_SQDIFF | 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。 |
CV_TM_CCORR | 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度越好。 |
CV_TM_CCOEFF | 相关系数匹配法:1表示完美的匹配;-1表示最差的匹配。 |
CV_TM_SQDIFF_NORMED | 计算归一化平方差,计算出来的值越接近0,越相关 |
CV_TM_CCORR_NORMED | 计算归一化相关性,计算出来的值越接近1,越相关 |
CV_TM_CCOEFF_NORMED | 计算归一化相关系数,计算出来的值越接近1,越相关 |
2、获取匹配结果函数:cv2.minMaxLoc()
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(ret)
参数说明:min_val, max_val, min_loc, max_loc 分别表示最小值,最大值,以及最小值和最大值对应的图像中的位置, ret就是cv2.matchTemplate()函数返回的矩阵
# 模板匹配
img = cv2.imread('lena.jpg', 0)
template = cv2.imread('face.jpg', 0)
h, w = template.shape[:2]
methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR','cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']
res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)for meth in methods:img2 = img.copy()# 匹配方法的真值method = eval(meth)res = cv2.matchTemplate(img, template, method)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)# 如果是平方差匹配TM_SQDIFF或归一化平方差匹配TM_SQDIFF_NORMED,取最小值if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:top_left = min_locelse:top_left = max_locbottom_right = (top_left[0] + w, top_left[1] + h)# 画矩形cv2.rectangle(img2, top_left, bottom_right, 255, 2)plt.subplot(121), plt.imshow(res, cmap='gray')plt.xticks([]), plt.yticks([]) # 隐藏坐标轴plt.subplot(122), plt.imshow(img2, cmap='gray')plt.xticks([]), plt.yticks([])plt.suptitle(meth)plt.show()
多对象匹配:我们匹配的是图中的金币,读入的两张图分别是原图和金币模板
img_rgb = cv2.imread('mario.jpg')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('mario_coin.jpg', 0)
h, w = template.shape[:2]res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
# 取匹配程度大于%80的坐标
loc = np.where(res >= threshold)
#np.where返回的坐标值(x,y)是(h,w),注意h,w的顺序
for pt in zip(*loc[::-1]): bottom_right = (pt[0] + w, pt[1] + h)cv2.rectangle(img_rgb, pt, bottom_right, (0, 0, 255), 2)cv2.imshow('img_rgb', img_rgb)
cv2.waitKey(0)
opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)相关推荐
- Opencv学习笔记——直方图与模板匹配
文章目录 一.直方图 1.画直方图 2.mask的使用 3.直方图均值化 4.自适应直方图均衡化 二.模板匹配 1.匹配单个对象 2.匹配多个对象 一.直方图 直方图是像素点数值分布的统计图形表示,也 ...
- OpenCV学习(二十) :直方图匹配、对比:calcHist(),minMaxLoc(),compareHist()
直方图匹配.对比:calcHist ,minMaxLoc,compareHist 1.calcHist()函数 2.归一化:normalize()函数 3.minMaxLoc()函数 4.compar ...
- OpenCV学习笔记(十二)——图像分割与提取
在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...
- OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()
OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置...
python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置 Download JetBrains Python IDE :: PyCharm http://ww ...
- windows内核开发学习笔记十八:IRP 处理的标准模式
windows内核开发学习笔记十八:IRP 处理的标准模式 在 Windows 内核中的请求基本上是通过 I/O Request Packet 完成的. I/O manager ---> Dis ...
- OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()
OpenCV学习(二十三) :模板匹配:matchTemplate() 1.概述 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配 ...
- Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件
Polyworks脚本开发学习笔记(十八)-用SDK开发Polyworks插件 插件是由PolyWorks加载的动态链接库(DLL文件),然后查询Polyworks模块,以确定它们具有哪些功能,提供给 ...
- opencv进阶学习笔记8:模板匹配
基础版笔记传送门: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 模板匹配原理 模板匹配(Te ...
最新文章
- poj1195 Mobile phones 二维线段树入门
- Workshop | 超高效的设计方法你GET了吗?Design Sprint设计冲刺工作坊
- java调用rocketmq_java操作RocketMQ
- iOS_9_scrollView分页
- LATEX学习篇【二】:论文中的公式技巧QA
- python的with as语句_python with (as)语句
- 理清逻辑,确保云原生时代应用开发的全生命周期安全
- 计算文件的hash值方法 | 使用powershell 以及 使用python
- linux 备份路由配置文件,RouterOS的备份和恢复
- 知识图谱、Gremlin Traversal Language、RDF、Amazon Nepture 图数据库介绍
- c语言全局变量6,C语言全局变量定义方法
- 悼念前端大牛司徒正美
- C# 计算农历日期方法 2022
- leetcode刷题java之739. 每日温度
- 2021抖音数据报告
- markdown编辑器。
- Hadoop随堂练习
- 独享ip和共享ip的区别
- 【K210】人脸识别 KPU-kpu.run_yolo2()函数说明
- 华为云数据库DDS产品深度赋能