OpenCV 模板匹配 matchTemplate

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

一、模板匹配概念

  模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像进行匹配的一种方法。

应用:

  (1)目标查找定位

  (2)运动物体跟踪

1、模板匹配 --- matchTemplate()

CV_EXPORTS_W void matchTemplate(InputArray image, InputArray temp1, OutputArray result, int method);

  image:待搜索图像(大图)

  temp1:搜索模板,需和原图一样数据类型且尺寸大小不能大于源图像

  reuslt:比较结果的映射图像,其必须为单通道的,32位浮点型图像,如果原图(待搜索图像)尺寸为W*H,二temp1的尺寸为w*h,则result的尺寸一定是(W-w+1)*(H-h+1)

  method:指定的匹配方法,有如下六种:

1     TM_SQDIFF --- 平方差匹配法(最好匹配0)
2     TM_SQDIFF_NORMED --- 归一化平方差匹配法(最好匹配0)
3     TM_CCORR --- 相关匹配法(最坏匹配0)
4     TM_CCORR_NORMED ---归一化相关匹配法(最坏匹配0)
5     TM_CCOEFF --- 系数匹配法(最好匹配1)
6     TM_CCOEFF_NORMED --- 归一化系数匹配法(最好匹配1)

 平方差匹配 method=TM_SQDIFF:最好匹配为0,匹配越差,匹配值越大

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

标准平方差匹配 method=TM_SQDIFF_NORMED:

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

相关匹配 method=TM_CCORR

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

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

 标准相关匹配 method=TM_CCORR_NORMED

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

相关匹配 method=TM_CCOEFF

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

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

 标准相关匹配 method=TM_CCOEFF_NORMED

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

 

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

2、矩阵归一化 --- normalize()

1 C++: void normalize(InputArray src,OutputArray dst, double alpha=1, 
            double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )

  src:输入源图像,Mat类型

  dst:输出结果图像,需要和原图一样的尺寸和类型

  alpha:归一化后的最小值,默认为1

  beta:归一化后的最大值,默认为0

  norm_type:归一化类型,可选:NORM_INF, NORM_L1, NORM_L2(默认)等

  dtype:默认值为-1,此参数为负值时,输出矩阵和src有同样的类型

  mask:可选的掩码操作

normallize()函数的作用是进行矩阵归一化。

3、寻找最值 --- minMaxLoc()

1 CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal, CV_OUT double* maxVal = 0, 
                  CV_OUT Point* minLoc=0, CV_OUT Point* maxLoc=0, 
                  InputArray mask=noArray());

  src:输入源图像,单通道图像

  minVal:返回最小值的指针,若无需返回,则置为0

  maxVal:返回最大值的指针,若无需返回,则置为0

  minLoc:返回最小位置的指针,若无需返回,则置为0

  maxLoc:返回最大位置的指针,若无需返回,则置为0

  mask:可选的掩码操作

minMaxLoc()函数的作用是在数组中找到全局最小值和最大值

单模板匹配code:

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
  
using namespace std;
using namespace cv;

int main()
{
    Mat temp=imread("zi.jpg");
    Mat src=imread("mu.jpg");
    Mat dst=src.clone();
    imshow("temp",temp);

    int width=src.cols-temp.cols+1;//result宽度
    int height=src.rows-temp.rows+1;//result高度

   Mat result(height,width,CV_32FC1);//创建结果映射图像
    matchTemplate(src, temp, result, TM_SQDIFF); //平方差匹配法(最好匹配0)
     //matchTemplate(srcImg, templateImg, resultImg, CV_TM_SQDIFF_NORMED); //归一化平方差匹配法(最好匹配0)
    //matchTemplate(srcImg, templateImg, resultImg, CV_TM_CCORR); //相关匹配法(最坏匹配0)
    //matchTemplate(srcImg, templateImg, resultImg, CV_TM_CCORR_NORMED); //归一化相关匹配法(最坏匹配0)
    //matchTemplate(srcImg, templateImg, resultImg, CV_TM_CCOEFF); //系数匹配法(最好匹配1)
    //matchTemplate(src,temp,result, TM_CCOEFF);//化相关系数匹配,最佳值1
    imshow("result",result);
    normalize(result,result,0,1,NORM_MINMAX,-1);//归一化到0-1范围

   double minValue,maxValue;
    Point minLoc,maxLoc;
    minMaxLoc(result,&minValue,&maxValue,&minLoc,&maxLoc);
   cout<<"minValue="<<minValue<<endl;
    cout<<"maxValue="<<maxValue<<endl;

    rectangle(dst,maxLoc,Point(maxLoc.x+temp.cols,maxLoc.y+temp.rows),Scalar(0,255,0),2,8);
    imshow("dst",dst);

    waitKey(0);
    return 0;
}

另:模板匹配要求图片一定是 32位 图片,详情见零一博客文章来源地址https://www.toymoban.com/news/detail-761885.html

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

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

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

相关文章

  • Opencv——图像模板匹配

    Opencv——图像模板匹配

    什么是模板匹配呢? 看到这里大家是否会觉得很熟悉的感觉涌上心头!在人脸识别是不是也会看见 等等。 模板匹配可以看作是对象检测的一种非常基本的形式。使用模板匹配,我们可以使用包含要检测对象的“模板”来检测输入图像中的对象。 参数:(img: 原始图像、

    2024年02月16日
    浏览(14)
  • OpenCV 模板匹配 matchTemplate

    OpenCV 模板匹配 matchTemplate

    模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配(相似)部分的技术。模板匹配不是基于直方图的,而是通过在输入图像上滑动图像块(模板)同时对比相似度,来对模板和输入图像进行匹配的一种方法。 应用: (1)目标查找定位 (2)运动物体跟踪 image:待搜

    2024年02月04日
    浏览(24)
  • opencv 多角度模板匹配

    opencv 多角度模板匹配

    总结一下实现多角度模板匹配踩的坑 一 、多角度匹配涉及到要使用mask,首先opencv matchTemplateMask自带的源码如下: 可以看到使用用了四次dft来计算卷积,目标图像要与mask卷三次,来计算目标图像在模板区域内的和,平方和。其中最后一次CCorr(I, mask2)可以省略掉,它跟CCorr(I

    2024年02月07日
    浏览(15)
  • OPENCV C++(十二)模板匹配

    OPENCV C++(十二)模板匹配

    正常模板匹配函数  这里0代表的是方法,一般默认为0就ok  img是输入图像 templatee是模板 resultmat是输出 对于输出的说明: 就是说result图像中的每一个点的值代表了一次相似度比较结果。  如图可知,模板在待测图像上每次在横向或是纵向上移动一个像素,并作一次比较计算

    2024年02月13日
    浏览(14)
  • OpenCV(11):模板匹配实例讲解

    OpenCV(11):模板匹配实例讲解

    在OpenCV中,模板匹配是一种图像处理技术,用于在一个大的图像中查找和定位一个小的目标图像(也称为模板)。 通俗而言,就是通过一张图片找到和另一张图片相似的部分。 从此章开始,opencv系列所有的之后更新的博客都会更注重实际应用,而不是仅仅简单讲解一个小方

    2024年02月04日
    浏览(9)
  • 【OpenCV】第十五章: 模板匹配

    【OpenCV】第十五章: 模板匹配

    第十五章: 模板匹配 模板匹配就是在给定的图片中查找和模板最相似的区域。 实现的方法是:将模板在图片上滑动(从左向右,从上向下),遍历所有滑窗,计算匹配度,将所有计算结果保存在一个矩阵种,并将矩阵中匹配度最高的值作为匹配结果。 一、单模板匹配 1、匹配函

    2024年02月02日
    浏览(15)
  • 008 OpenCV matchTemplate 模板匹配

    008 OpenCV matchTemplate 模板匹配

    目录 一、环境 二、模板匹配算法原理 三、代码演示 本文使用环境为: Windows10 Python 3.9.17 opencv-python 4.8.0.74 cv.matchTemplate 是OpenCV库中的一个函数,用于在图像中查找与模板匹配的特征。它的主要应用场景是在图像处理、计算机视觉和模式识别等领域。 算法原理: cv.matchTempl

    2024年02月05日
    浏览(9)
  • Opencv实验合集——实验六:模板匹配

    Opencv实验合集——实验六:模板匹配

    1.概念 模板匹配旨在在图像中找到与给定模板最相似的部分。其核心思想是通过滑动模板,计算每个位置与模板的相似性,然后找到最匹配的位置。这一过程常涉及选择匹配度量方法,如平方差匹配、归一化平方差匹配、相关性匹配等。模板匹配在目标检测、物体识别等领域

    2024年02月02日
    浏览(13)
  • opencv直方图与模板匹配

    opencv直方图与模板匹配

    直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img] channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它

    2024年02月12日
    浏览(12)
  • OpenCV自学笔记十八:模板匹配

    模板匹配是一种在图像中寻找指定模式的方法。OpenCV库提供了用于模板匹配的函数,可以帮助我们在图像中定位和识别特定的模式。下面是模板匹配的基础原理和一个示例: 模板匹配通过在待匹配图像上滑动一个固定大小的模板图像,并计算模板与图像之间的相似度来寻找匹

    2024年02月07日
    浏览(12)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包