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中enumerate的用法实例解析
Aug 18 Python
python连接oracle数据库实例
Oct 17 Python
手动实现把python项目发布为exe可执行程序过程分享
Oct 23 Python
python中OrderedDict的使用方法详解
May 05 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python使用progressbar模块实现的显示进度条功能
May 31 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
django实现支付宝支付实例讲解
Oct 17 Python
python中提高pip install速度
Feb 14 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
Python数据分析入门之教你怎么搭建环境
May 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,ajax实现分页
2008/03/27 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
php文件缓存类汇总
2014/11/21 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
webix+springmvc session超时跳转登录页面
2016/10/30 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python适配器模式代码实现解析
2019/08/02 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
英国复古服装购物网站:Collectif
2019/10/30 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
中学生打架检讨书
2014/10/13 职场文书
公司慰问信范文
2015/03/23 职场文书
教师节班会主持词
2015/07/06 职场文书
四年级作文之植物
2019/09/20 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python