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 类与元类的深度挖掘 I【经验】
May 06 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 Python
Flask-Mail用法实例分析
Jul 21 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
django模板结构优化的方法
Feb 28 Python
Python创建或生成列表的操作方法
Jun 19 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 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(1)
2006/10/09 PHP
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
php中对2个数组相加的函数
2011/06/24 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
JS中的phototype详解
2017/02/04 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
年会主持词结束语
2014/03/27 职场文书
2014年度考核工作总结
2014/12/24 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
锦旗赠语
2015/06/23 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
详解python网络进程
2021/06/15 Python
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL