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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python使用7z解压apk包的方法
Apr 18 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
python验证码识别的实例详解
Sep 09 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
基于python 字符编码的理解
Sep 02 Python
Python pymongo模块用法示例
Mar 31 Python
Django项目实战之用户头像上传与访问的示例
Apr 21 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
基于python实现可视化生成二维码工具
Jul 08 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
PHP中的Memcache详解
2014/04/05 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JS常用函数使用指南
2014/11/23 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
python中的yield使用方法
2014/02/11 Python
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
幼儿园长自我鉴定
2013/10/17 职场文书
一名老师的自我评价
2014/02/07 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
淘宝好评语大全
2014/05/05 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
软件测试专业推荐信
2014/09/18 职场文书
公务员年度个人总结
2015/02/12 职场文书
歼十出击观后感
2015/06/11 职场文书
学校少先队工作总结
2015/08/12 职场文书
教师远程研修感悟
2015/11/18 职场文书
Python中常见的导入方式总结
2021/05/06 Python