OpenCV-Python模板匹配人眼的实例


Posted in Python onJune 08, 2021

什么是模板匹配

模板匹配是指在当前图像A内寻找与图像B最相似的部分,可以理解找茬,但是这里是找出一样的信息。

一般我们将图像A称为输入图像,将图像B称为模板图像。模板匹配的原理就是将模板B图像在图像A上滑动遍历,找出与其匹配的部分。

模板匹配函数

在OpenCV中,它给我们提供了cv2.matchTemplate()函数来完成模板匹配。其函数的完整定义如下:

def matchTemplate(image, templ, method, result=None, mask=None):

image:原始图像

templ:模板图像

method:匹配方法。该参数通过TemplateMatchModes实现,如下表所示:

 

参数 取值 含义
cv2.TM_SQDIFF 0 以方差为依据进行匹配。若完全匹配,则结果为0;若不匹配,则会得到一个很大的差值
cv2.TM_SQDIFF_NORMED 1 标准(归一化)平方差匹配
cv2.TM_CCORR 2 相关匹配,这类方法将模板图像与输入图像相乘,如果乘积越大,则匹配度较高;如果乘积为0,则表示匹配效果最差
cv2.TM_CCORR_NORMED 3 标准(归一化)相关匹配
cv2.TM_CCOEFF 4 相关系统匹配,这类方法将模板图像与其均值的相对值,和输入图像与其均值的相关值进行匹配。1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关匹配(随机序列)
cv2.TM_CCOEFF_NORMED 5 标准(归一化)相关系数匹配

result:返回值。它是由每个位置的比较结果组合所构成的一个结果集,类型是单通道32位浮点型。如果输入图像尺寸是WH,模板尺寸是wh,则返回值的大小为(W-w+1)*(H-h+1)。

mask:模板图像掩模。它必须与模板图像具有相同类型的大小。通常使用默认值即可。

实现模板匹配

首先,我们需要两张图片,这里我们还是选取经常用的美女照片以及截取其眼睛部分作为模板图像,如下:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread("4.jpg", 0)
template = cv2.imread("4_1.jpg", 0)

th, tw = template.shape[::]

rv = cv2.matchTemplate(img, template, cv2.TM_SQDIFF)
min, max, minLoc, maxLoc = cv2.minMaxLoc(rv)

topLeft = minLoc
bottomRight = (topLeft[0] + tw, topLeft[1] + th)
cv2.rectangle(img, topLeft, bottomRight, 255, 2)

plt.subplot(121)
plt.imshow(template, cmap="gray")
plt.axis('off')
plt.subplot(122)
plt.imshow(img, cmap="gray")
plt.axis('off')
plt.show()

运行之后,效果如下:

OpenCV-Python模板匹配人眼的实例

附录:

模板图

OpenCV-Python模板匹配人眼的实例

原图

OpenCV-Python模板匹配人眼的实例

到此这篇关于OpenCV-Python模板匹配人眼的实例的文章就介绍到这了,更多相关OpenCV 模板匹配 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单谈谈Python流程控制语句
Dec 04 Python
python如何统计序列中元素
Jul 31 Python
python实现数据写入excel表格
Mar 25 Python
Django之无名分组和有名分组的实现
Apr 16 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
Python读取stdin方法实例
May 24 Python
python opencv 二值化 计算白色像素点的实例
Jul 03 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
pycharm配置当鼠标悬停时快速提示方法参数
Jul 31 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
用python制作个音乐下载器
Jan 30 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 Python
健身房被搭讪?用python写了个小米计时器助人为乐
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
OpenCV-Python实现轮廓拟合
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Django drf请求模块源码解析
Python中OpenCV实现查找轮廓的实例
python字符串的多行输出的实例详解
Jun 08 #Python
You might like
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
Vue实现返回顶部按钮实例代码
2020/10/21 Javascript
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
求职者简历中的自我评价
2013/10/20 职场文书
培训主管的岗位职责
2013/11/23 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
学生思想表现的评语
2014/01/30 职场文书
揭牌仪式主持词
2014/03/19 职场文书
2015年外联部工作总结
2015/04/03 职场文书
学校开除通知书
2015/04/25 职场文书
cf战队宣传语
2015/07/13 职场文书
工作简报范文
2015/07/21 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
Python并发编程实例教程之线程的玩法
2021/06/20 Python