opencv#27模板匹配

这篇具有很好参考价值的文章主要介绍了opencv#27模板匹配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

图像模板匹配原理

opencv#27模板匹配,opencv,人工智能,计算机视觉

     例如给定一张图片,如上图大矩阵所示,然后给定一张模板图像,如上图小矩阵。

     我们在大图像中去搜索与小图像中相同的部分或者是最为相似的内容。比如我们在图像中以灰色区域给出一个与模板图像尺寸大小一致的区域,通过比较灰色区域中的内容与模板中的内容,两者如果一致,那么则认定两者是相似的,从而实现了在目标图像中寻找模板图像的匹配过程,若两者不一致,比如上图阴影区域中第一个像素值为3,而模板中第一个像素值为4,那么两者之间存在差距,通过每一个对应像素之间进行一次度量计算作为模板匹配中的匹配系数(度量矩阵),之后移动图像中的阴影区域(一次移动一个像素,从左往右,从上往下),再次对阴影区域所对应的像素值与模板中的像素进行度量计算得到模板匹配系数,每移动一次阴影区域就可以得到一个模板匹配系数,之后寻找这个系数所代表的匹配的最佳结果的位置即为最终的匹配结果(相似程度最高)。

opencv#27模板匹配,opencv,人工智能,计算机视觉    如上图所示用TM_CCORR_NORMED方法处理后的result为度量矩阵(即匹配系数),最白的位置代表最高的匹配系数,以系数最佳(最大或者最小,看你用什么算法)为顶点(即图像的左上角点,opencv中图像坐标原点为左上角点,y向下值越大,x向右值越大),做一个长宽和模板图像一样大小的矩形框,即为最佳匹配的区域。

实际中我们可以使用函数minMaxLoc来定位矩阵R中的最大值(最小值)。

图像模板匹配函数

matchTenplate()

vodi cv::matchTemplate(InputArray  image,
                       InputArray  templ,
                       OutputArray result,
                       int         method,
                       InputArray  mask = noArray()
                      )

·image:待模板匹配的原图像,图像数据类型为CV_8U和CV_32F两者之一。

·templ:模板图像,需要与image具有相同的数据类型,但是尺寸不能大于image。

·result:模板匹配结果输出图像,图像数据类型为CV_32F。如果image的尺寸为W*H,模板图像尺寸为w*h,则输出图像的尺寸为(W-w+1) * (H-h+1)。

·method:模板匹配方法标志。

·mask:匹配模板的掩码,必须与模板图像具有相同的数据类型和尺寸,默认情况下不设置,目前仅支持在TM_SQDIFF和TM_CCORR_NORMED这两种匹配方法时使用。

图像模板匹配方法标志

opencv#27模板匹配,opencv,人工智能,计算机视觉

·平方差匹配TM_SQDIFF:

最好匹配为0,匹配程度越低,值越大。

opencv#27模板匹配,opencv,人工智能,计算机视觉

·标准平方差匹配TM_SQDIFF_NORMED:

opencv#27模板匹配,opencv,人工智能,计算机视觉

·相关匹配TM_CCORR:

此类方法采用模板与图像间的乘法操作,所以较大的数表示匹配程度高,0表示最差的匹配效果。

opencv#27模板匹配,opencv,人工智能,计算机视觉

·标准相关匹配TM_CCORR_NORMED:

opencv#27模板匹配,opencv,人工智能,计算机视觉

·系数匹配TM_CCOEFF:

此类方法将模板对其均值的相对值与图像对其均值的相对值进行匹配,1表示完美匹配,-1表示糟糕匹配,0表示没有任何相关性(随机序列)。

opencv#27模板匹配,opencv,人工智能,计算机视觉

·标准系数匹配:TM_CCOEFF_NORMED:

opencv#27模板匹配,opencv,人工智能,计算机视觉

随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(也意味着越来越大的计算代价),最好的办法是对所有这些设置多做一些测试实验,以便为自己的应用选择同时兼顾速度和精度的最佳方案。文章来源地址https://www.toymoban.com/news/detail-819214.html

示例:
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv; //opencv的命名空间
using namespace std;

//主函数
int main()
{
	Mat img = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lenac.png");
	Mat temp = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lena_face.png");//模板图像
	
	Mat result; //匹配结果

	matchTemplate(img, temp, result, TM_CCOEFF_NORMED);//模板匹配函数

	double maxval, minval;
	Point maxLoc, minLoc;
	minMaxLoc(result, &minval, &maxval, &minLoc, &maxLoc);//最大值最小值寻找函数

	//然后我们在图像中找到最大值的位置,绘制出匹配成功的区域,就能够在图像中看到最佳匹配的结果

	rectangle(img, Point(maxLoc.x, maxLoc.y), Point(maxLoc.x + temp.cols, maxLoc.y + temp.rows), Scalar(0, 0, 255), 2);//矩形框绘制
circle(img, Point(maxLoc.x, maxLoc.y), 1, Scalar(255, 0, 120), 30); //最大值点的位置

	imshow("原图像", img);
	imshow("模板图像", temp);
	imshow("result", result);


	


	waitKey(0);//等待函数用于显示图像
	return 0;

}

到了这里,关于opencv#27模板匹配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能课程】计算机科学博士作业一

    模型拟合:用深度神经网络拟合一个回归模型。从各种角度对其改进,评价指标为MSE。 掌握技巧: 熟悉并掌握深度学习模型训练的基本技巧。 提高PyTorch的使用熟练度。 掌握改进深度学习的方法。 数据集下载: Kaggle下载数据: https://www.kaggle.com/competitions/ml2022spring-hw1 百度云

    2024年01月23日
    浏览(61)
  • 【人工智能课程】计算机科学博士作业三

    来源:李宏毅2022课程第10课的作业 图片攻击是指故意对数字图像进行修改,以使机器学习模型产生错误的输出或者产生预期之外的结果。这种攻击是通过将微小的、通常对人类难以察觉的扰动应用于输入图像来实现的。图片攻击是对深度学习系统中的鲁棒性和安全性的一种测

    2024年03月16日
    浏览(75)
  • hnu计算机与人工智能概论5.6

    最近有点忙,好久没更新了,大家见谅!最后一关howell也做不出来  第1关:数据分析基础 1.将scores.xls文件读到名为df的dataframe中 2.添加平均分列:考勤、实验操作、实验报告的平均 3.输出前3行学生的平均分列表,控制小数点后两位 4.输出学生人数和班级数 5.分别输出实验报

    2024年02月04日
    浏览(59)
  • 人工智能与计算机辅助决策的技术融合

    人工智能(Artificial Intelligence, AI)和计算机辅助决策(Computer-Aided Decision, CAD)是两个不同的领域,但它们之间存在密切的联系和相互作用。人工智能主要关注于模拟和创造人类智能的机器,包括学习、理解自然语言、视觉识别、推理和决策等方面。而计算机辅助决策则关注于利用

    2024年02月22日
    浏览(61)
  • hnu计算机与人工智能概论答案3.8

    连夜更新,求求关注!! 写在前面:这一课难度较低,报错时多看看冒号和缩进有无错误,祝大家做题顺利!!! 第1关:python分支入门基础 根据提示,在右侧编辑器补充代码,完成分支程序设计(用函数调用的方式来实现)。 第1题: 闰年的判断:判断某一年是否是闰年,

    2024年02月08日
    浏览(49)
  • 人工智能在计算机视觉中的应用与挑战

    引言 计算机视觉是人工智能领域的一个重要分支,旨在让计算机能够像人一样理解和解释视觉信息,实现图像和视频的自动识别、理解和分析。计算机视觉技术已经在许多领域产生了深远的影响,如人脸识别、自动驾驶、医学影像分析等。本篇博客将深入探讨人工智能在计算

    2024年02月14日
    浏览(62)
  • hnu计算机与人工智能概论答案3.15

     终于肝完了!有一说一,这一次难度肉眼可见的提升,终于明白程序员为什么会秃顶了(头发真的禁不住薅啊),祝大家好运! 第1关:循环结构-while与for循环 第1题 编程计算如下公式的值1^2+3^2+5^2+...+995^2+997^2+999^2并输出结果 第2题 用 while 语句完成程序逻辑,求如下算法可

    2024年02月08日
    浏览(60)
  • hnu计算机与人工智能概论答案2.20

    补一下第一次作业 第1关:数据输入与输出 第一题 在屏幕上输出字符串:hi, \\\"how are you\\\" ,I\\\'m fine and you 第二题 从键盘输入两个整数,计算两个数相除的商与余数 假设输入12,5 输出为 2 2 第三题 在屏幕上 输入一个三位数输出该数的个位、十位和百位数字 假设输入125 输出为 5 2

    2024年02月08日
    浏览(61)
  • 探索人工智能 | 计算机视觉 让计算机打开新灵之窗

    计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。 计算机视觉既是工程领域,也是科学领域中的一个富

    2024年02月14日
    浏览(53)
  • hnu计算机与人工智能概论5.26(方程求根)

    第1关:用暴力搜索法求方程的近似根  本关任务:用暴力搜索法求 f(x)=x3−x−1 在[-10,10]之间的近似根。已知f(-10)0,f(10)0,画图可知函数在[-10,10]区间有且仅有一个根。要求近似根带入函数f(x)之后,函数值与0之间的误差在 10−6 之内,请保留4位小数输出该根值,并输出搜寻次

    2024年02月03日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包