opencv之matchTemplate

opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取) OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。: 首先,加载目标图像和要匹配的模板图像。: 选择适当的匹配方法,例如 cv2.TM_CCOEFF、cv2.TM_CCOEFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_SQDIFF 或 cv2.TM_SQDIFF_NORMED。每种方法对应不同的匹配计算方式。 阅读详情

C++: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method)

image:  搜索对象图像 It must be 8-bit or 32-bit floating-point.

templ:模板图像,小于image,并且和image有相同的数据类型

result:比较结果 必须是单通单32位浮点数

method:比较算法总共有六种如下所示


method=CV_TM_SQDIFF

R(x,y)= \sum _{x',y'} (T(x',y')-I(x+x',y+y'))^2

  • method=CV_TM_SQDIFF_NORMED

    R(x,y)= \frac{\sum_{x',y'} (T(x',y')-I(x+x',y+y'))^2}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}

  • method=CV_TM_CCORR

    R(x,y)= \sum _{x',y'} (T(x',y')  \cdot I(x+x',y+y'))

  • method=CV_TM_CCORR_NORMED

    R(x,y)= \frac{\sum_{x',y'} (T(x',y') \cdot I(x+x',y+y'))}{\sqrt{\sum_{x',y'}T(x',y')^2 \cdot \sum_{x',y'} I(x+x',y+y')^2}}

  • method=CV_TM_CCOEFF

    R(x,y)= \sum _{x',y'} (T'(x',y')  \cdot I'(x+x',y+y'))

    where

    \begin{array}{l} T'(x',y')=T(x',y') - 1/(w  \cdot h)  \cdot \sum _{x'',y''} T(x'',y'') \\ I'(x+x',y+y')=I(x+x',y+y') - 1/(w  \cdot h)  \cdot \sum _{x'',y''} I(x+x'',y+y'') \end{array}

  • method=CV_TM_CCOEFF_NORMED

    R(x,y)= \frac{ \sum_{x',y'} (T'(x',y') \cdot I'(x+x',y+y')) }{ \sqrt{\sum_{x',y'}T'(x',y')^2 \cdot \sum_{x',y'} I'(x+x',y+y')^2} }

  • #include<opencv2\core\core.hpp>
    #include<opencv2\highgui\highgui.hpp>
    #include<opencv2\imgproc\imgproc.hpp>
    #include<iostream>
    
    using namespace std;
    using namespace cv;
    
    Mat src,tmpl,result;
    int  matchMethod = 0;
    Mat src_gray,tmpl_gray;
    
    void on_match(int,void*);
    
    int main()
    {
    	src = imread("fruits.jpg");
    	tmpl = imread("template.jpg");
    	
    	if (!src.data)
    		return-1;
    	cvtColor(src,src_gray,CV_RGB2GRAY);
    
    	if (!tmpl.data)
    		return-1;
    	cvtColor(tmpl,tmpl_gray,CV_RGB2GRAY);
    
    	namedWindow("MatchImage");
    	namedWindow("Result");
    	createTrackbar("匹配算法","MatchImage",&matchMethod,5,on_match);
    
    	on_match(matchMethod,0);
    
    	waitKey();
    	return 0;
    
    }
    
    void on_match(int,void*)
    {
    	Mat img = src_gray.clone();
    	matchTemplate(src_gray,tmpl_gray,result,matchMethod);
    	///定位
    	double minValue,maxValue;
    	Point minLoc,maxLoc;
    	Point matchLoc;
    	minMaxLoc(result,&minValue,&maxValue,&minLoc,&maxLoc,Mat());
    
    	if( matchMethod  == CV_TM_SQDIFF || matchMethod == CV_TM_SQDIFF_NORMED )
        { matchLoc = minLoc; }
      else
        { matchLoc = maxLoc; }
    
    	rectangle(img,matchLoc,Point(matchLoc.x+tmpl.cols,matchLoc.y+tmpl.rows),Scalar::all(0),2,8,0);
    	rectangle( result, matchLoc, Point( matchLoc.x + tmpl.cols , matchLoc.y + tmpl.rows ), Scalar::all(0), 2, 8, 0 );
    
    	imshow("MatchImage",img);
    	imshow("Result",result);
    
    }




OpenCV + matchTemplate 的简单例子 # 导入所需库文件,numpy和cv2。 import cv2 import numpy as np # 加载原始图像和要搜索的图像模板 img = cv2.imread('wife.jpg') # OpenCV对原始图像进行处理,创建一个灰度版本 img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 加载将要搜索的图像模板#记录图像模板的尺寸 t... 阅读详情

相关推荐

OpenCV3】模板匹配——cv::matchTemplate()详解

模板匹配通常被用于目标检测、相似度分析中,opencv2opencv3中提供了一个专门用于模板匹配的函数——cv::matchTemplate()。

guduruyu的专栏 8万+

六、模板匹配

模板匹配是指在当前图像A内寻找与图像B最相似的部分,一般将图像A称为输入图像,将图像B称为模板图像。模板匹配的操作方法是将模板图像B在图像A上滑动,遍历所有像素以完成匹配。 ** 6.1模板匹配的基础 ** cv2.matchTemplate(image,templ,method,[mask]) ● image为原始图像,必须是8位或者32位的浮点型图像。 ● templ为模板图像。它的尺寸必须小...

yuexinguowan001的博客 1168

python opencv图像匹配 matchTemplate函数

算法思路 将目标图像在源图像中滑动,计算两个相同大小图像的距离,最后根据距离最小的位置作为匹配结果 其中计算图像距离的算法有多种:TM_SQDIFF,TM_SQDIFF_NORMED等详细见opencv官网 算法很简单,只用用在图像没有发生变形的情况下 代码 import cv2 def match_image(source, template): # 选择匹配算法 match_...

smilife_的博客 6832

数据分析

数据分析 绘制折线图: 初步了解matplotlib模块: from matplotlib import pyplot as plt x = range(2,26,2) y = [15,13,14.5,17,20,25,26,25,27,22,18,15] # 设置图片大小,figsize设置图片大小,dpi设置分辨率 plt.figure(figsize=(20,8...

weixin_30872671的博客 228

OpenCVMatchTemplate函数参数详解及原理分析

OpenCVMatchTemplate函数参数详解及原理分析 201900161098 马田慧 智能19 模板匹配是在一幅图像中寻找一个特定目标的方法之一,这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。OpenCV提供了6种模板匹配算法。 MatchTemplate MatchTemplate(InputArray image, InputArray templ, OutputArray result, int meth

qq_48034566的博客 1万+

python matchtemplate返回值相似度_Python语言---函数的返回值return

1.函数的返回值: 定义: 函数的返回值就是函数调用表达式的值/也是return关键字后的表达式的值. (1)没有return的函数def 相反举例:def func1(): # print('123') return 123 print(func1()) #>>>123 a = func1() #&...

weixin_39653448的博客 883

opencv 模版匹配matchtemplate方法介绍

matchTemplate函数的输入是一个小图像模版和一个被搜索的图像,结果返回一个Mat函数,表示每一个像素位置上的相似度。     matchTemplate( InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray() );   image 为被搜索的图像(

1234的博客 4905

opencv模板匹配matchTemplate

模板匹配的原理 模板匹配可以说是一种最简单的模式识别方法,它的实现主要是通过模板图像在被匹配图像中的平移,在被匹配图像中逐个区域寻找和模板图像相似的区域,如果存在某区域的相似度大于一定的阈值,则表明该区域和模板图像是相匹配的。 但是模板匹配这种方式具有很大的自身局限性: 首先它利用一个规定好的模板进行匹配,这就导致了想要匹配出来的结果必须在大小和角度上和模板图像一模一样,一旦原图像中的匹配目标发生旋转或大小变化,就会导致匹配准确率急剧下降。 而且模板图像在原图像中进行移动的时候,只能够平行地上、下、左

DayDayUp 1847

008 OpenCV matchTemplate 模板匹配

008 OpenCV matchTemplate 模板匹配

整理ing 2295

opencv学习(三十八)之图像模板匹配matchTemplate()

1.概述利用计算机视觉技术对图像进行处理,通常会用到图像的匹配,图像匹配是指图像之间的比较,得到不同图像之间的相似度,在机器识别的过程中把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获得的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找对应的模式。匹配方法大体分为基于灰度和基于特征两类,其中基于特征的配准方法研究较多。 基于灰度的模板匹配方法原理简单且在光照良好的条件下可以

烟雨博客 2万+

opencv java match_OpenCV模板匹配函数matchTemplate详解

参考文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matching/template_matching.html#id2最近一直在做一个logo检测的项目,检测logo的有无,接触到模板匹配。模板匹配虽然精度不高,但选择恰当的方法,设置合适的阈值也能起到一定作用。...

weixin_42309293的博客 1417

opencv2matchTemplate源码分析与优化(一)

opencv代码中,matchTemplate函数保存在文件imgproc文件夹下的templmatch.cpp中。主要包括下面三个函数: void crossCorr( const Mat& img, const Mat& _templ, Mat& corr,Size corrsize, int ctype,Point anchor, double delta, in...

weixin_30673715的博客 2315

OpenCV模板匹配(cv2.matchTemplate

添加链接描述 在本教程中,您将学习如何使用OpenCVcv2.matchTemplate 功能。 除了轮廓过滤和处理之外,模板匹配可以说是对象检测的最简单形式之一: 它实现简单,只需要2-3行代码 模板匹配计算效率高 不需要执行阈值化,边缘检测等操作即可生成二进制图像(例如轮廓检测和处理) 通过基本扩展,模板匹配可以检测输入图像中相同/相似对象的多个实例(我们将在下周介绍) 当然,模板匹配不是完美的。尽管有很多积极因素,但是如果输入图像中存在变化的因素,包括旋转,缩放,视角等变化,模板匹配很快就会失败

此木子 8万+

基于VS与OpenCV的模板匹配学习(1):OpenCV matchTemplate()示例

基于VS与OpenCV的模板匹配学习(1) OpenCV matchTemplate()示例

分享学习经验,欢迎交流! 5617

python cv2 matchtemplate,带有透明性的python opencv cv2 matchTemplate

OpenCV 3.0.0 added the ability to specify a mask while performing templateMatch. When I specify a mask I get this error: error: (-215) (depth == CV_8U || depth == CV_32F) && type == _templ.typ...

weixin_35834271的博客 933

OpenCV 模板匹配函数matchTemplate详解

void cv::matchTemplate( cv::InputArray image, // 待匹配图像W*H cv::InputArray templ, // 模板图像,和image类型相同, 大小 w*h cv::OutputArray result, // 匹配结果图像, 类型 32F, 大小 (W-w+1)*(H-...

weixin_30467087的博客 1277

使用OpenCV中的matchTemplate函数实现模板匹配【C++版】

模板匹配例程

Star_ID的博客 5196
上一篇: opencv之line
下一篇: opencv之Mat
ubunfans
博客等级 码龄17年 142粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值