纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

OpenCV 模板匹配 OpenCV-Python模板匹配人眼的实例

一天一篇Python库   2021-06-08 我要评论
想了解OpenCV-Python模板匹配人眼的实例的相关内容吗一天一篇Python库在本文为您仔细讲解OpenCV 模板匹配 的相关知识和一些Code实例欢迎阅读和指正我们先划重点:OpenCV,模板匹配,OpenCV,模板匹配人眼下面大家一起来学习吧

什么是模板匹配

模板匹配是指在当前图像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()

运行之后效果如下:

效果

附录:

模板图

模板图

原图

原图


相关文章

猜您喜欢

  • Golang异常处理 Golang中异常处理机制详解

    想了解Golang中异常处理机制详解的相关内容吗zchanglin在本文为您仔细讲解Golang异常处理的相关知识和一些Code实例欢迎阅读和指正我们先划重点:golang异常处理最佳实践,go错误处理,golang异常处理下面大家一起来学习吧..
  • java HashMap java集合类HashMap源码解析

    想了解java集合类HashMap源码解析的相关内容吗代码学习在本文为您仔细讲解java HashMap的相关知识和一些Code实例欢迎阅读和指正我们先划重点:java,HashMap,java集合下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式