OpenCV学习(二十三) :模板匹配:matchTemplate(),minMaxLoc()

这篇博客介绍了OpenCV中的模板匹配方法,包括matchTemplate()函数的工作原理和minMaxLoc()函数的用途。讨论了6种不同的匹配算法,如平方差匹配法、归一化平方差匹配法、相关匹配法等,以及它们的匹配效果和适用场景。文章通过示例展示了每种匹配方法的输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV学习(二十三) :模板匹配:matchTemplate()

1、概述

模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。
它是图像处理中最基本、最常用的匹配方法。
模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。
模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域
参考:
模板匹配
OpenCV模板匹配函数:matchTemplate()介绍

2、minMaxLoc()函数

寻找矩阵(一维数组当作向量,用Mat定义) 中最小值和最大值的位置。

void cv::minMaxLoc(	
InputArray 	src,				// 输入单通道阵列
double * 	minVal,				// 指向返回的最小值的指针;如果不需要,则使用NULL。
double * 	maxVal = 0,			// 指向返回的最大值的指针;如果不需要,则使用NULL。	
Point * 	minLoc = 0,			// 指向返回的最小位置的指针(二维情况下);如果不需要,则使用NULL。
Point * 	maxLoc = 0,			// 指向返回的最大位置的指针(二维情况下);如果不需要,则使用NULL。
InputArray 	mask = noArray() 	// 用于选择子数组的可选掩码。
)	

3、matchTemplate()函数

工作原理:在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。

matchTemplate(
InputArray image,		// 待搜索源图像,必须是8位整数或32位浮点
InputArray 	templ,		// 模板图像,必须不大于源图像并具有相同的数据类型。
OutputArray result,		// 表示匹配结果图像,必须是单通道32位浮点。如果image的尺寸为W x H,templ的尺寸为w x h,则result的尺寸为(W-w+1)x(H-h+1)
int method,				// 表示计算匹配程度的方法
InputArray 	mask = noArray() 	//搜索模板的掩码。它必须具有与templ相同的数据类型和大小。它不是默认设置的。
)	

1.几种常见的模板匹配算法:
在这里插入图片描述
1. cv::TM_SQDIFF平方差匹配法
计算模板与目标图像的方差,由于是像素值差值的平方的和,所以值越小匹配程度越高;

2. cv::TM_SQDIFF_NORMED归一化平方差匹配法
范化的cv::TM_SQDIFFÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值