栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

c++ opencv 模板匹配matchTemplate

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ opencv 模板匹配matchTemplate

#include   
#include   
#include   
#include 

using namespace cv;

int main()
{ 
	Mat srcImage = imread("XXX.jpg");  //原图
	Mat tempImage = imread("xxx.jpg"); //模板图像

	Mat resultImage; //结果图像
	int resultImage_rows = srcImage.rows - tempImage.rows + 1;  //结果图像的行数:W-w+1,W:原图像的行数,w:模板图像的行数
	int resultImage_cols = srcImage.cols - tempImage.cols + 1;  //结果图像的列数:H-h+1,H:原图像的列数,h:模板图像的列数
	resultImage.create(resultImage_rows, resultImage_cols, CV_32FC1);   //结果图像必须为单通道32位浮点型

	//TM_SQDIFF:平方差匹配法  TM_SQDIFF_NORMED:归一化平方差匹配法  
	//TM_CCORR:相关匹配法 M_CCORR_NORMED:归一化相关匹配法  TM_CCOEFF:系数匹配法  TM_CCOEFF_NORMED:化相关系数匹配法
	int method = TM_CCOEFF_NORMED;
	matchTemplate(srcImage, tempImage, resultImage, method);    //模板匹配
	normalize(resultImage, resultImage, 0, 1, NORM_MINMAX, -1, Mat());  //归一化处理

	double minValue, maxValue;
	Point minLocation, maxLocation, matchLocation;

	minMaxLoc(resultImage, &minValue, &maxValue, &minLocation, &maxLocation, Mat()); //在resultImage中矩阵的每一个点的亮度表示与模板T的匹配程度

	if (method == TM_SQDIFF || method == TM_SQDIFF_NORMED)  //越小越匹配
	{
		matchLocation = minLocation;    //匹配图像的左上角
	}
	else //越大越匹配
	{
		matchLocation = maxLocation;
	}

	//在原图上匹配区域画矩形
	rectangle(srcImage, matchLocation, Point(matchLocation.x + tempImage.cols, matchLocation.y + tempImage.rows), Scalar(0, 0, 255), 2, 8, 0);
	std::cout << "左上角坐标:"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/741715.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号