OpenCV-Python模板匹配人眼的实例
目录
- 什么是模板匹配
- 模板匹配函数
- 实现模板匹配
什么是模板匹配
模板匹配是指在当前图像A内寻找与图像B最相似的部分,可以理解找茬,但是这里是找出一样的信息。
一般我们将图像A称为输入图像,将图像B称为模板图像。模板匹配的原理就是将模板B图像在图像A上滑动遍历,找出与其匹配的部分。
模板匹配函数
在OpenCV中,它给我们提供了cv2.matchTemplate()函数来完成模板匹配。其函数的完整定义如下:
def matchTemplate(image, templ, method, result=None, mask=None):
image:原始图像
templ:模板图像
method:匹配方法。该参数通过TemplateMatchModes实现,如下表所示:
参数
取值
含义
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 模板匹配 内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!
【文章出处:外国服务器 请说明出处】