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 相关文章推荐
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
Python变量和字符串详解
Apr 29 Python
Python中扩展包的安装方法详解
Jun 14 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
Python学生信息管理系统修改版
Mar 13 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
深入浅析Python中的迭代器
Jun 04 Python
Python generator生成器和yield表达式详解
Aug 08 Python
使用python实现哈希表、字典、集合操作
Dec 22 Python
使用pytorch实现可视化中间层的结果
Dec 30 Python
python cookie反爬处理的实现
Nov 01 Python
健身房被搭讪?用python写了个小米计时器助人为乐
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
OpenCV-Python实现轮廓拟合
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Django drf请求模块源码解析
Python中OpenCV实现查找轮廓的实例
python字符串的多行输出的实例详解
Jun 08 #Python
You might like
php mssql 数据库分页SQL语句
2008/12/16 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
Vue不能观察到数组length的变化
2018/06/08 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
python实现猜数字小游戏
2020/03/24 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
pandas如何处理缺失值
2019/07/31 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
股东出资证明书(正规版)
2014/09/24 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书