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中类的一些方法分析
Sep 25 Python
Python模拟用户登录验证
Sep 11 Python
Python 使用with上下文实现计时功能
Mar 09 Python
利用python如何处理百万条数据(适用java新手)
Jun 06 Python
Python button选取本地图片并显示的实例
Jun 13 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
在Python中实现字典反转案例
Dec 05 Python
健身房被搭讪?用python写了个小米计时器助人为乐
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
OpenCV-Python实现轮廓拟合
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
Django drf请求模块源码解析
Python中OpenCV实现查找轮廓的实例
python字符串的多行输出的实例详解
Jun 08 #Python
You might like
用libTemplate实现静态网页的生成
2006/10/09 PHP
如何使用PHP中的字符串函数
2006/11/24 PHP
PHP提取中文首字母
2008/04/09 PHP
php 缓存函数代码
2008/08/27 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
jQuery替换字符串(实例代码)
2013/11/13 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
ES6中class类用法实例浅析
2017/04/06 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Python内置模块logging用法实例分析
2018/02/12 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
妈妈的账单教学反思
2014/02/06 职场文书
好人好事演讲稿
2014/09/01 职场文书
课程设计感想范文
2015/08/11 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python