Opencv模板匹配学习
模板匹配:
一、单对象
模板匹配是一种用于在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV带有一个函数cv.matchTemplate()。它只是将模板图像滑动到输入图像上(就像在2D卷积中一样),然后在模板图像下比较模板和输入图像的拼图。
如果输入图像的大小为(WxH),而模板图像的大小为(wxh),则输出图像的大小将为(W-w + 1,H-h + 1)。得到结果后,可以使用cv.minMaxLoc()函数查找最大/最小值在哪。将其作为矩形的左上角,并以(w,h)作为矩形的宽度和高度。该矩形是您模板的区域
如果使用cv.TM_SQDIFF作为比较方法,则最小值提供最佳匹配。
用到函数:
cv.matchTemplate(),cv.minMaxLoc()
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltimg = cv.imread("E:\\python opencv\\demo2\\wiki4.jpg", 0)
img2 = img.copy()
template = cv.imread("E:\\python opencv\\demo2\\wiki6.jpg", 0)
w, h = template.shape[::-1]#六种方法比较
methods = ['cv.TM_CCOEFF', 'cv.TM_CCOEFF_NORMED', 'cv.TM_CCORR', 'cv.TM_CCORR_NORMED', 'cv.TM_SQDIFF', 'cv.TM_SQDIFF_NORMED']
for meth in methods:img = img2.copy()method = eval(meth)#应用模板匹配res = cv.matchTemplate(img, template, method)min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)#如果方法是cv.TM_SQDIFF或cv.TM_SQDIFF_NORMED,则取最小值if method in [cv.TM_SQDIFF, cv.TM_SQDIFF_NORMED]:top_left = min_locelse:top_left = max_locbottom_right = (top_left[0] + w, top_left[1] + h)cv.rectangle(img, top_left, bottom_right, 255, 2)plt.subplot(121), plt.imshow(res, cmap='gray')plt.title('Matching Result'), plt.xticks([]), plt.yticks([])plt.subplot(122), plt.imshow(img, cmap='gray')plt.title('Detected Point'), plt.xticks([]), plt.yticks([])plt.suptitle(meth)plt.show()cv.destroyAllWindows()
第三种方法效果不太好
二、多对象
import cv2 as cv
import numpy as np
from matplotlib import pyplot as pltimg = cv.imread("E:\\python opencv\\demo2\\wiki7.png")
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('img', img)
template = cv.imread("E:\\python opencv\\demo2\\wiki8.png", 0)
w, h = template.shape[::-1]
res = cv.matchTemplate(img_gray, template, cv.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
for pt in zip(*loc[::-1]):cv.rectangle(img, pt, (pt[0] + w, pt[1] + h), (0, 0, 255), 2)
cv.imshow('res', img)
cv.waitKey()
cv.destroyAllWindows()
Opencv模板匹配学习相关推荐
- 基于VS与OpenCV的模板匹配学习(4):手写OpenCV matchTemplate()
基于VS与OpenCV的模板匹配学习(4):手写OpenCV matchTemplate() 文章目录 基于VS与OpenCV的模板匹配学习(4):手写OpenCV matchTemplate() 前 ...
- OpenCV模板匹配Template Matching
OpenCV模板匹配Template Matching 模板匹配Template Matching 目标 理论 什么是模板匹配? OpenCV提供哪些匹配方法? 代码 解释 结果 模板匹配Templa ...
- 图像匹配与OpenCV模板匹配
介绍 (Introduction) As a data scientist at VATBox, I've mainly worked on projects which at their core ...
- OpenCV模板匹配识别图片中的数字
OpenCV模板匹配识别图片中的数字 前言 本博客主要实现利用OpenCV的模板匹配识别图像中的数字,然后把识别出来的数字输出到txt文件中,如果识别失败则输出"读取失败". 操作 ...
- opencv 模板匹配(cvMatchTemplate)
opencv 模板匹配(cvMatchTemplate) 模板匹配是通过在输入图像上滑动模板图像块对实际的图像块和输入图像进行匹配,并且可以利用函数cvMinMaxLoc()找到最佳匹配的位置.例如在 ...
- OpenCV模板匹配函数:matchTemplate()介绍
OpenCV模板匹配函数:matchTemplate()介绍
- 深度学习从入门到精通——Opencv模板匹配完成信用卡识别
信用卡识别 轮廓模板 显示模板图像 模板转灰度图转阈值 计算轮廓 轮廓排序并且保留 显示图像 转灰度图 进行礼帽操作 Sobel边缘算子 闭操作 补洞 轮廓排序 结果依次识别 轮廓模板 识别出来的数字 ...
- java通过模板匹配html,OpenCV模板匹配
目标 在本教程中,您将学习如何:使用OpenCV功能matchTemplate()来搜索图像补丁和输入图像之间的匹配 使用OpenCV函数minMaxLoc()来查找给定数组中的最大值和最小值(以及它 ...
- python opencv模板匹配多目标_基于opencv的多目标模板匹配
利用opencv进行多目标模板匹配,只要是利用其matchTemplate函数,但在多目标(这里是讨论目标图片中不同大小模板的匹配),以下贴出代码和图片,供大家参考: #include #includ ...
- opencv 模板匹配_详细剖析模板匹配
点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 模板匹配介绍 我们需要2幅图像: 原图像 (I): 在这幅图像里, ...
最新文章
- FastDFS之Linux下搭建
- 第二阶段个人冲刺10
- Quartus使用技巧(一些常用的方法)
- fir.im Weekly - 2017 年必须了解的 iOS 开源库
- 静态路由默认路由的配置
- 论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法
- 一企业彻底实现金融风险数字化,节约人力超4000小时
- matlab kmeans c 代码,K-means之matlab实现
- 问题8:NavigationController 自定义返回按钮I
- Redis的持久化——AOF
- PMP证书考试试题有多少
- Axure RP 9 培训讲解---高级免费课程
- 中国互联网二十四年红黑史
- dpkg安装软件流程_Linux下安装软件的一般步骤
- 分布式文件系统的性能测试方法
- java 解析umd文件_Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解
- 巨潮网怎么下载年报_如何下载上市公司财务报表?
- JavaScript 对象大全
- 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(三)—KNN算法)...
- HTML文字动画,缓慢浮入
热门文章
- linux镜像文件太大不好下载_Rufus下载_Rufus官方下载[U盘工具]
- codeforces题解
- python计算iv值_Python计算IV值的示例讲解
- 计算机网络毕业设计汇报ppt,计算机ppt毕业设计模板
- iconfont矢量图标库的引用方法
- java计算机毕业设计足球队管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- iozone测试IO方法
- 汇编语言集成开发环境 RadASM 中文版 (修复object file not found报错)
- idea设置修改字体大小与样式【亲测好用】
- 利用win10自带的工具测硬盘读写速度