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实现3行代码解简单的一元一次方程
Aug 18 Python
Python的动态重新封装的教程
Apr 11 Python
python 上下文管理器使用方法小结
Oct 10 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
Python实现学生成绩管理系统
Apr 05 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python BeautifulReport可视化报告代码实例
Apr 13 Python
python删除文件、清空目录的实现方法
Sep 23 Python
健身房被搭讪?用python写了个小米计时器助人为乐
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
OpenCV-Python实现轮廓拟合
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Django drf请求模块源码解析
Python中OpenCV实现查找轮廓的实例
python字符串的多行输出的实例详解
Jun 08 #Python
You might like
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
详解vue组件基础
2018/05/04 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
Python安装OpenCV的示例代码
2020/03/05 Python
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
你对IPv6了解程度
2016/02/09 面试题
同学聚会策划方案
2014/06/06 职场文书
2014年转正工作总结
2014/11/08 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
Pandas自定义选项option设置
2021/07/25 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫