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 相关文章推荐
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
python获取代理IP的实例分享
May 07 Python
python使用rpc框架gRPC的方法
Aug 24 Python
python K近邻算法的kd树实现
Sep 06 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
python matplotlib拟合直线的实现
Nov 19 Python
tensorflow 环境变量设置方式
Feb 06 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 Python
python speech模块的使用方法
Sep 09 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 Python
10个顶级Python实用库推荐
Mar 04 Python
Python echarts实现数据可视化实例详解
Mar 03 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 高手之路(三)
2006/10/09 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
PHP header函数分析详解
2011/08/06 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
js 通用javascript函数库整理
2011/08/14 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Python----数据预处理代码实例
2019/03/20 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
python实现从wind导入数据
2019/12/03 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
机修工岗位职责
2013/11/24 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
2014教师年度工作总结
2014/11/10 职场文书
2015年三万活动总结
2015/03/25 职场文书
安全第一课观后感
2015/06/18 职场文书
教师病假条范文
2015/08/17 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
python自然语言处理之字典树知识总结
2021/04/25 Python