EmguCv模板匹配[通俗易懂]

模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。先贴上简陋的界面图  代码:Matsrc=newImage<Bgr,byte>(ib_o…

大家好,又见面了,我是你们的朋友全栈君。

模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。

先贴上简陋的界面图 

EmguCv模板匹配[通俗易懂]

 代码:

Mat src = new Image<Bgr, byte>(ib_original.Image.Bitmap).Mat;

            Mat temp = new Mat("模板.jpg", Emgu.CV.CvEnum.LoadImageType.AnyColor);//匹配的模板
            //创建mat 存储输出匹配结果。
            Mat result = new Mat(new Size(src.Width - temp.Width + 1, src.Height - temp.Height + 1),
                Emgu.CV.CvEnum.DepthType.Cv32F, 1);

            #region 模板匹配参数说明
            //采用系数匹配法,匹配值越大越接近准确图像。
            //IInputArray image:输入待搜索的图像。图像类型为8位或32位浮点类型。设图像的大小为[W, H]。
            //IInputArray templ:输入模板图像,类型与待搜索图像类型一致,并且大小不能大于待搜索图像。设图像大小为[w, h]。
            //IOutputArray result:输出匹配的结果,单通道,32位浮点类型且大小为[W - w + 1, H - h + 1]。
            //TemplateMatchingType method:枚举类型标识符,表示匹配算法类型。
            //Sqdiff = 0 平方差匹配,最好的匹配为 0。
            //SqdiffNormed = 1 归一化平方差匹配,最好效果为 0。
            //Ccorr = 2 相关匹配法,数值越大效果越好。
            //CcorrNormed = 3 归一化相关匹配法,数值越大效果越好。
            //Ccoeff = 4 系数匹配法,数值越大效果越好。
            //CcoeffNormed = 5 归一化系数匹配法,数值越大效果越好。
            #endregion
            CvInvoke.MatchTemplate(src, temp, result, Emgu.CV.CvEnum.TemplateMatchingType.Ccoeff);

            #region 归一化函数参数说明
            //IInputArray src:输入数据。
            //IOutputArray dst:进行归一化后输出数据。
            //double alpha = 1; 归一化后的最大值,默认为 1。
            //double beta = 0:归一化后的最小值,默认为 0。
            #endregion
            CvInvoke.Normalize(result, result, 255, 0, Emgu.CV.CvEnum.NormType.MinMax);

            double max = 0, min = 0;//创建double的极值。
            Point max_point = new Point(0, 0), min_point = new Point(0, 0);

            #region 极值函数参数说明
            //IInputArray arr:输入数组。
            //ref double minVal:输出数组中的最小值。
            //ref double maxVal; 输出数组中的最大值。
            //ref Point minLoc:输出最小值的坐标。
            //ref Point maxLoc; 输出最大值的坐标。
            //IInputArray mask = null:蒙版。
            #endregion
            CvInvoke.MinMaxLoc(result, ref min, ref max, ref min_point, ref max_point);
            CvInvoke.Rectangle(src, new Rectangle(max_point, temp.Size), new MCvScalar(0, 0, 255), 3);//绘制矩形,匹配得到的效果。
            tb_result.Text = "min=" + min + ",max=" + max;
            tb_result.Text += Environment.NewLine;
            tb_result.Text += "最大值坐标:"+ max_point.ToString();
            tb_result.Text += Environment.NewLine;
            tb_result.Text += "最小值坐标:" + min_point.ToString();
            ib_original.Image = src;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126823.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea激活 jetbrains-agent(jetbrains激活码)

    一、下载jar包JetbrainsCrack-2.7-release-str.jar百度这个jar包名字很多资源最好是找最新的二、找到软件的安装路径下的bin目录;将下载的jar包放到bin目录下,并将datagrip64.exe.vmoptions、datagrip.exe.vmoptions两个文件末尾添加一行代码-javaagent:C:\JetBrains\DataGri…

    2022年4月14日
    2.1K
  • socket中的connect提示报错:errno = “EINPROGRESS“

    socket中的connect提示报错:errno = “EINPROGRESS“socketconnectioctlsocketerror.h#defineEINPROGRESS115/*Operationnowinprogress*/

    2022年7月16日
    19
  • linux命令行怎么结束进程,linux结束进程命令「建议收藏」

    linux命令行怎么结束进程,linux结束进程命令「建议收藏」linux下进程的开启与结束都可以通过命令来控制,下面由学习啦小编为大家整理了linux下结束进程命令的相关知识,希望对大家有所帮助。linux结束进程命令1.killkill[信号代码]根据PID向进程发送信号,常用来结束进程,默认信号为-9信号代码,可取值如下:-l[信号数字]显示、翻译信号代码-9,-KILL发送kill信号退出-6,-ABRT发送abort信号…

    2025年6月22日
    4
  • Tomcat的下载和安装教程,超级详细

    Tomcat的下载和安装教程,超级详细1、什么是Tomcat?tomcat是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP程序的首选。最初由Sun公司的软件架构师詹姆斯·邓肯·戴维森开发,后来他帮助将其变为开源项目并由Sun公司贡献给Apache软件基金会。2、Tomcat的下载1)下载地址http://tomcat.apache.org/2)版本选择进入官网主页,看到左侧栏的download的下载目录,尽量不选择最新的版本,选择较为稳定的版本。目前最新的版本是

    2022年5月19日
    41
  • unity3d自学教程_3D技巧

    unity3d自学教程_3D技巧0.目录简要介绍基本概念视图菜单坐标系统资源元素脚本交互相机操作 1.简要介绍Unity3D软件是由UnityTechnologies公司提供的综合开发环境,主要面向游戏开发人员、虚拟现实设计师等,可用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的多媒体内容,并支持这些内容在Windows、iOS、Android等多种平台的发布,功能非常强大。Unity3D

    2022年8月10日
    12
  • 微博舆情分析系统_新浪舆情通

    微博舆情分析系统_新浪舆情通1新浪微博舆情分析系统 摘要  随着互联网的迅速发展,互联网上信息也在飞速增加。如何在广泛信息中总体把握舆情,是一个很重要的问题。本系统实现了基于新浪微博的舆情分析,提供了相关话题获得、关注度曲线绘制、情感取向分析等功能;并对“复旦”关键词进行了跨越一年的舆情分析的实验。  关键词  中文信息处理; 舆情分析; 情感分析 1. 引言 随着Web2.0时…

    2026年1月28日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号