28-模板匹配

CGO与OpenCV实现工业视觉多角度模板匹配优化 计算机视觉中的模板匹配是工业自动化检测的核心技术,其原理是通过算法在目标图像中定位预定义模板的位置。传统基于像素对比的方法存在旋转敏感、计算量大等局限,而结合OpenCV的特征匹配算法与Go语言的CGO跨语言调用技术,能显著提升系统性能。在工业质检场景中,这种方案通过优化图像金字塔参数、并行计算策略等工程实践,可将处理速度提升3-4倍,同时保持99%以上的识别准确率。典型应用包括PCB元件检测、产品缺陷识别等需要处理多角度变体的场景,其中CGO技术栈有效平衡了开发效率与执行性能,OpenCV4.x的matc 阅读详情

模板匹配(Template Match)

1、模板匹配概念;
2、API;
3、Code;

模板匹配(Template Match)

1、模板:一幅小的子图像,在大的图像(目标图像)中寻找与子图像相同或相似的部分,称为模板匹配;
在这里插入图片描述

2、模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域;
3、模板匹配首先需要一个模板图像T(给定的子图像),还需要一个待检测的图像(S),在待检测图像(Target Image)上,从左到右,从上到下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大;

模板匹配算法

OpenCV中提供了6种常见的匹配算法:

1、计算平方不同;越小,越匹配(0–完全匹配)
2、计算相关性(Correlation);越相关,值越大
3、计算相关系数;越大,越相似
4、计算归一化平方不同;
5、计算归一化相关性不同;(==1 , 完全相关)
6、计算归一化相关系数;

在这里插入图片描述
在这里插入图片描述

对应的宏定义

TM_SQDIFF : 计算平方不同
TM_SQDIFF_NORMED :计算归一化平方不同
TM_CCORR : 计算相关性
TM_CCORR_NORMED : 计算归一化相关性
TM_CCOEFF : 计算相关系数
TM_CCOEFF_NORMED : 计算归一化相关系数

在这里插入图片描述

相关API

1、模板匹配API : matchTemplate()
参数说明:
image : 源图像,必须是8bit或32bit浮点数图像;
templ : 模板图像,必须与输入图像一致;
result : 必须是单通道32位浮点数,假定原图像大小 为 W i d t h × H e i g h t Width \times Height Width×Height,模板图像大小为 w i d t h × h e i g h t width \times height width×height,则输出图像大小必须是 ( W i d t h − w i d t h + 1 ) × ( H e i g h t − h e i g h t + 1 ) (Width - width + 1 )\times (Height -height + 1) (Width−width+1)×(Height−height+1)
method : 使用的匹配方法(宏定义,尽量使用归一化方法)
在这里插入图片描述
在这里插入图片描述

Code

#include <opencv2/opencv.hpp>
#include <iostream>

#include <math.h>

using namespace std;
using namespace cv;

Mat t1, src, dst;

int match_method = CV_TM_SQDIFF_NORMED;
int max_track = 5;

const char* INPUT = "input image";
const char* OUTPUT = "result image";
const char* match_t = "template match demo";

void Match_Demo(int, void*);

int main(int argc, char** argv)
{
	//待检测图像
	src = imread("C:\\Users\\hello\\Desktop\\20.jpg");
	//模板图像
	t1 = imread("C:\\Users\\hello\\Desktop\\50.jpg");
	if (src.empty() || t1.empty())
	{
		cout << "could not load the image..." << endl;
		return -1;
	}
	namedWindow(INPUT, WINDOW_AUTOSIZE);
	namedWindow(OUTPUT, WINDOW_AUTOSIZE);
	namedWindow(match_t, WINDOW_AUTOSIZE);
	imshow(INPUT, src);
	imshow("template image", t1);
	createTrackbar("Template Match Method:", INPUT, &match_method, max_track, Match_Demo);
	Match_Demo(0, 0);


	waitKey(0);
	return 0;
}

void Match_Demo(int, void*)
{
	//实现模板匹配
	
	int width = src.cols - t1.cols + 1;
	int height = src.rows - t1.rows + 1;
	Mat result(height,width,CV_32FC1);
	//result.create(height, width, CV_32FC1);
	//调用模板匹配
	matchTemplate(src, t1, result, match_method, Mat()); //从滑动条中获取值
	//最后得到的图片不再0-1之间,需要对图像归一化   求取模板匹配中的最大最小值,与哪些位置匹配
	normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());
		
	//找出最小值与最大值匹配的位置
	Point minLoc;
	Point maxLoc;
	double min, max;
	minMaxLoc(result, &min, &max, &minLoc, &maxLoc, Mat());

	//将位置绘制出来
	src.copyTo(dst);
	Point tempLoc;
	if (match_method == CV_TM_SQDIFF_NORMED || match_method == CV_TM_SQDIFF_NORMED)
	{
		tempLoc = minLoc;
	}
	else
	{
		tempLoc = maxLoc;
	}
	//绘制矩形
	rectangle(dst, Rect(tempLoc.x, tempLoc.y, t1.cols, t1.rows), Scalar(0, 0, 255), 2, LINE_AA);
	rectangle(result, Rect(tempLoc.x, tempLoc.y, t1.cols, t1.rows), Scalar(0, 0, 255), 2, LINE_AA);

	imshow(OUTPUT, result);
	imshow(match_t, dst);
}

效果

原图像,模板图像,模板匹配输出图像分别如下:
注意:OpenCV提供的6种算法需要自行判断适应性,有的算法适应性不好,对某些模板检测会出现错误的情况,属于算法本身的缺陷;有的算法则不会出现这种情况;
在这里插入图片描述

halcon模板匹配之shape/ncc模板匹配参数详解 Shape模板匹配 create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID) 参数: **NumLevels:**金字塔层数越大,计算次数越快。【但采样过程中,图像信息减少,匹配的精确性会降... 阅读详情

相关推荐

MATLAB车牌识别实战工程包:含预处理、定位、分割、识别全链路代码+28张真实车牌图

直接运行就能跑通的MATLAB车牌识别项目,包含图像灰度化、高斯滤波、自适应二值化等预处理步骤;基于HSV颜色空间与Canny边缘检测的车牌粗定位;结合投影法和连通域分析实现字符精准切分;采用模板匹配方式识别中文省份简称(粤、鲁、豫、陕、苏、渝、京、贵)及字母数字(A-Z、0-9)。所有函数模块独立封装,main_run.m为统一入口,配套28张实拍风格车牌样本图(含整牌图与单字符图如S、Q、G、X、K),另有倾斜校正示例图、字符模板库、声音提示模块(duchushengyin.m)、形态学处理(xingt

root9的博客 188

基于压缩字典树RadixTree实现API路径匹配

年初网关这块出于多方面的考虑,希望重构API网关的路由匹配实现,我们的API采用restful风格,在路径中存在参数,称之为API模板。在网关层,后端服务注册开放出去的API,要遵守API模板的约束。网关的一个主要职责,就是将请求path匹配到指定的API(模板)上,并将请求转发给注册了该API(模板)的后端服务。如果没有匹配到,则说明是一个无法识别的请求,并予以拒绝。先来看下api模板长什么样子RFC6570中约定了多种leve...............

一只Coding猪 896

RSSISimilarityWeb:基于 Java 的 Web 应用程序,它包含构建在 OBSearch 相似性 API 之上的“相似性匹配”算法实现

RSSIS相似网站 室内定位服务 该项目中开发的基于 RSSI 的室内定位系统利用无线传感器节点,例如接入点 (AP) 或任何其他能够生成接收信号强度指示 (RSSI) 的传感器模式,该指示可用于确定某个位置的位置室内环境中的目标物体。 带有 RFID 标签的设备或带有无线天线的智能手机扫描来自周围活动 AP 的 RSSI,并使用 HTTP 通信协议将记录的值发送到服务器。 部署在服务器上的“本地化服务”接收RSSI,提取位置相关信息并传递给具有相似性匹配算法实现的组件。 具有来自数据库的最相似 RSSI 的房间或区域将作为当前估计的位置返回给客户端/访客。 < 职责: 设计和实现包含称为 OBSearch 的相似性匹配算法 API 的本地化服务的一部分。 使用 servlet 技术在 Web 层实现 HTTP 请求/响应处理组件,以将信号相关数据发送到本地化服务并从服务接收估计的位置

【机器视觉】三种常见的模板匹配算法

模板匹配技术是一项强大且灵活的图像处理技术。通过结合图像金字塔、基于形状的匹配(包括形状特征提取、模板创建、匹配过程等)、基于灰度的匹配以及变形匹配等方法,我们可以应对各种复杂的图像匹配问题。在未来,随着计算机视觉技术的不断发展,模板匹配技术将在更多领域发挥重要作用。

m0_59197405的博客 5228

OpenCV机械臂手眼标定

这篇文章总结了手眼标定的原理,利用OpenCV自带的函数套用参数即可完成眼在手上和眼在手外两种标定。

Q先森的博客 6588

LeGO-LOAM相对LOAM的改进---地面分离的方法-算法原理+代码讲解

实际上此种地⾯分离算法有⼀些简单,我们可以结合激光雷达安装⾼度等其他先验信息进⾏优化,避免将桌子这些当作地面点。LeGO-LOAM中前端改进中很重要的⼀点就是充分利⽤了地⾯点,那⾸先⾃然是提取对地⾯点的提取。理想情况下, 应该接近0,考虑到⼀⽅⾯激光雷达安装也⽆法做到绝对⽔平,另⼀⽅⾯,地⾯也不是绝。对⽔平,因此,这个⾓度会略微⼤于0,考虑到作者实际在草坪之类的场景下运动,因此这个值被设置成。如上图,相邻的两个扫描线束的同⼀列打在地⾯上如AB点所⽰,他们的垂直⾼度差。,计算垂直⾼度差和⽔平⾼度差的⾓度。..

zysss_的博客 775

Halcon 八种模版匹配方法汇总

方法适用场景计算速度鲁棒性灰度值匹配简单场景、光照稳定快低相关性匹配抗噪声、亮度变化中中形状匹配工业定位、部分遮挡快高组件匹配复杂结构、多部件目标慢高局部形变匹配弹性变形物体慢中透视形变匹配3D视角变化慢高描述符匹配自然场景、复杂纹理慢极高点匹配关键点显著的场景中中注意事项工业检测优先选择形状匹配或组件匹配;复杂场景(如自然图像)优先使用描述符匹配;对速度要求高时选择灰度值或相关性匹配。

doubleintfloat的博客 6330

保姆级教程:用Fiddler+夜神模拟器搞定抖音App抓包(附SSL Pinning绕过实战)

本文提供了一套完整的移动端抓包解决方案,详细介绍了如何使用Fiddler和夜神模拟器进行抖音App抓包,并重点讲解了SSL Pinning绕过技术。通过Xposed框架和JustTrustMe模块的组合,实现高效抓包,适用于产品分析、竞品研究和安全测试等场景。

weixin_30855099的博客 421

模板匹配的基本概念

  模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式的处理方法就叫做模板匹配。 简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其...

badingmian9476的博客 984

OSNet代码解析(普通卷积,分组卷积,深度可分离卷积,OSblock组成)

文章目录普通卷积和分组卷积普通卷积和深度可分离卷积用深度可分离卷积(LightConv3x3)代替普通卷积(Conv3x3)减少参数OSBlock (bottleneck)OSNet OSNet之所以轻量(2.2M)在于网络浅,使用深度可分离卷积代替传统卷积,但是很有效 普通卷积和分组卷积 所谓分组卷积,就是右图的input features分成一组一组,如上图groups=3,那么输入的特征分成3组,每组有12/3=4的通道的特征参与输出。然后根据输出通道的维度,得到每组的输入特征要计算两次(6/3=2

Mr_DaYang的博客 9801

Multi-Agent

Multi-Agent System(MAS,多代理系统)是分布式人工智能(DAI)领域皇冠上的明珠,其核心思想是通过多个自主、交互、目标导向的智能体(Agent)的协同与竞争,解决单智能体无法或难以高效处理的复杂问题——包括大规模资源调度、多模态数据理解与决策、复杂软件架构的自治运维、甚至未来城市级的交通与能源管理。本文将以结构化分析推理和第一性原理思考。

AI智能探索者的博客 407

28.模板匹配

1.模板匹配(Template Match) 模板匹配介绍 相关API演示 代码演示 2.模板匹配 介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 所以模板匹配首先需要一个模板图像T(给定的子 图像) 另外需要一个待检测的图像-源图像S 工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。 3.模板匹配介绍——...

罗伊的博客 430

【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

Handler如果没有消息处理是阻塞的还是非阻塞的? Looper 为什么要使用死循环? Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

字节卷动 758

opencv_28 模板匹配

1.概念 建立一个模板子区在源图像中从上到下从左到右寻找与模板子区最相似的像素块 2.六种相似性算法 (推荐使用归一化方法,结果在0-1之间好判断) 计算平方不同TM_SQDIFF 0 得到的值越小,则说明越相似 计算归一化平方不同 TM_SQDIFF_NORMED 1 计算相关性TM_CCORR 2 得到的值越大,则说明越相似 计算归一化相关性TM_CCORR_NORMED 3 计算相关系数 TM_CCOEFF 4 得到的值越大,则说明越相似 计算归一化相关系数TM_CC

weixin_41405284的博客 249

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 280

SAP 清账凭证 完整生成逻辑(超详细原理 + 底层规则 + 分录逻辑 + 互清特殊规则)

【SAP清账凭证核心逻辑摘要】(149字) SAP清账凭证生成遵循两大类型:1)资金往来对冲型(如F-32/F-44互清),强制生成含完整借贷分录的独立凭证,通过AUGDT/AUGBL字段绑定未清项,典型场景如应收冲应付(借:应付账款 贷:应收账款);2)纯核销型(如F.13自动清账),仅标记行项目状态不产生实际分录。关键规则:①仅未清项管理科目可清账;②互清必须配置主数据关联;③差额清账自动补差(折扣/汇差);④原始凭证永不修改,仅更新BSIK/BSAD等表状态。清账凭证均保留可追溯性,支持FBRA重置还

金牌架构师 542

第28课 模板匹配(TemplateMatch)

文章目录1. 模板匹配介绍1.1模板匹配的算法介绍2. 相关API2.1模板匹配matchTemplate()2.2在矩阵中需找全局的最大最小数minMaxLoc()3. 例程 1. 模板匹配介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像),另外需要一个待检测的图像-源图像S。 工作方法,在带检测图像上,从左到右,从上向下计算模板...

weixin_42877426的博客 2020

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

opencv python教程简书_OpenCV-Python教程:28.模板匹配

理论模板匹配是在一个大图里搜索和找模板图像位置的方法。OpenCV有个函数cv2.matchTemplate()来做这个。它吧模板图像在输入图像上滑动,对比模板和在模板图像下的输入图像块。它返回了一个灰度图像,每个像素表示那个像素周围和模板匹配的情况。如果输入图像大小是WxH而模板图像大小是wxh,输出图像的大小是(W-w+1, H-h+1)。当你得到了结果,你可以用cv2.minMaxLoc()...

weixin_39774905的博客 129

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python-opencv Tutorials 一码人翻译(28)图像处理---- --模板匹配

目标 在这一章中,你将学习 使用模板匹配来查找图像中的对象 您将看到这些功能:cv.matchTemplate()、cv.minMaxLoc() 理论 模板匹配是一种在较大的图像中搜索和查找模板图像位置的方法。OpenCV有一个函数cv.matchTemplate()来实现这个目的。它只是将模板图像滑过输入图像(就像在2D卷积中一样),并比较模板图像下的输入图像的模板和补丁。在OpenC...

qq_41905045的博客 532

c++基于模板匹配的手写数字识别(超详细)

大家好!本篇文章是关于手写数字识别的,接下来我将在这里记录我的手写数字识别的从零到有。当初我刚刚做这个实验的时候在csdn上找不到相应的例子,我在这里把我自己的写代码过程发出来,希望能帮到和我一样努力求知的人! 首先,本篇文章用到的方法是模板匹配,而不是基于神经网络的,还请各位注意了!(模板匹配还请自行了解,站上有很多介绍)我刚开始做实验的时候只有一点c++基础,对于文件和opencv我一点都不了解,所以导致了我刚开始迷茫了很久,直到后来才渐渐做起来。废话不多说,让我们开始吧! 过程很简单,如下:

m0_57587079的博客 4824

【视觉项目】【day2】8.21号实验记录(手机固定高度15cm拍摄+直方图均衡化+模板匹配,模板12个,测试28个,效果十分差)

目录均衡化代码模板图片按照大小排序总代码测试效果新思路 由于模板匹配是像素之间的比对,所以不同光照下的像素灰度值也会不同 所以在比对之前,我们需要对测试图和模板图进行直方图均衡化,这一步可以先实现。 今天将采用批量处理的方式,来检测模板匹配的准确度。 这里发现,最好还是先对所有测试图均衡化再截取模板。 因为测试图和模板图分开来均衡化是不合理的。 equalizeHist( src, dst ); 该函数只支持单通道的均衡化,对于彩色图像来说可以先将多通道分离成单通道,再合并成多通道。 均衡化代码 for

hanhan的博客 552

AI房产租赁合同3D动态生成与风险标注系统

上开发和测试特别顺畅,其内置的AI辅助编码功能帮助快速解决了合同模板的动态渲染问题。最惊喜的是部署体验——点击按钮就直接生成了可对外服务的网页应用,完全不用操心服务器配置。最近尝试用AI技术解决这个问题,开发了一个智能租赁合同生成系统,分享下实现过程和使用体验。比如会自动加入"房屋物品清单附件"功能,避免退租时的物品纠纷。系统内置了各省市的标准合同模板库,根据用户所在地自动匹配对应模板。表单设计时特别注意将法律术语转化为通俗提问,比如"押金数额"会提示"通常为1-3个月租金"。

AmberFalcon42的博客 295

python opencv模板匹配多目标_[python-opencv]模板匹配

模板匹配最适用于工业场合(在一张图片中识别特定的工件图)模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像(target)的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。简单来说,模板匹配就是在整个图像区域发现与给定子图像匹配...

weixin_35723036的博客 2486

python模板匹配_python实现模板匹配

目录:(一)原理(二)代码实现和几种常见的模板匹配算法正文:(一)原理在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。作用有局限性,必须在指定的环境下,才能匹配成功,是受到很多因素的影响,所以有一定的适应性。模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理...

weixin_39903176的博客 2395

BetterGI项目中的传送点路径记录异常问题分析与修复

在BetterGI(更好的原神)自动化工具中,传送点路径记录功能是核心组件之一,用于实现自动导航、资源收集和任务执行。然而,在实际使用过程中,用户频繁反馈传送点路径记录存在异常问题,主要表现为: - 传送点坐标识别不准确 - 路径记录过程中位置跳跃 - 地图匹配失败导致录制中断 - 沙漠等特殊地形下的匹配异常 ## 技术架构分析 ### 核心组件结构 ```mermaid classDia

gitblog_07840的博客 426
上一篇: 27-直方图反向投影
下一篇: 29-轮廓发现
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值