OpenCV图像处理开发实战(14) -- 模板匹配matchTemplate

1、模板匹配原理

模板匹配是从源图像中找出一个特定特征的区域图像。
主要算法:
(1)方差匹配 CV_TM_SQDIFF
(2)标准差匹配 CV_TM_SQDIFF_NORMED
(3)相关匹配 CV_TM_CCORR
(4)相关系数匹配 CV_TM_CCORR_NORMED
(5)相关匹配 CV_TM_CCOEFF
(6)相关系数匹配 CV_TM_CCOEFF_NORMED

在这里插入图片描述

2、模板匹配函数

void matchTemplate
( InputArray image, // 8Bit或32B
it浮点的位图
InputArray templ,// 与源图的数据类型相同,大小必须比源小。
OutputArray result,
int method, // 匹配方法
InputArray mask = noArray()
);

3、源代码

	int w = srcImg1.cols - tempalteImg.cols + 1;
	int h = srcImg1.rows - tempalteImg.rows + 1;
	Mat result(w, h, CV_32FC1);
	
	matchTemplate(srcImg1, tempalteImg, result, template_method);
	normalize(result, result,  1, 0, NORM_MINMAX);
	Point minPos;
	Point maxPos;
	double minVal;
	double maxVal;
	minMaxLoc(result, &minVal, &maxVal, &minPos, &maxPos);
	Mat dest;
	srcImg1.copyTo(dest);

	Point Pos = maxPos;
	if (template_method == CV_TM_SQDIFF || template_method == CV_TM_CCORR_NORMED)
	{
		Pos = minPos;
	}
	char* method_name[] = 
	{
		"CV_TM_SQDIFF",
		"CV_TM_SQDIFF_NORMED",
		"CV_TM_CCORR",
		"CV_TM_CCORR_NORMED",
		"CV_TM_CCOEFF",
		"CV_TM_CCOEFF_NORMED",
	};
	rectangle(dest, Rect(minPos.x, minPos.y, tempalteImg.cols, tempalteImg.rows), Scalar(0,0,255));
	putText(dest,
		method_name[template_method],
		Point(20, 40),
		1,
		2.0,
		Scalar(0, 0, 255),
		2
		);
	imshow("template", dest);

4、工程项目源码下载

本文源码在Debug–x64下编译
ZIP包中包含源开发环境,下载解压后可直接编译运行
下载源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值