opencv的模板匹配

发布时间:2026/8/25 5:54:50

opencv的模板匹配
看到有人用opencv的模板匹配其实更多的是相关系数匹配!从前讲了很多相关系数就是没去做其实就是计算复杂度太大不值得那是刚好实现了基于形状轮廓的匹配心思不在opencv上而且一直从底层写起故而只学习opencv从来很少调用opencv到目前为止从2011接触opencv算起屈指可数用过的opencv调用1人脸识别这个自己实在写不出来或许不是写不出只是一门心思在机器视觉上机器视觉都全部完成了所以不是写不出来的问题是学习舍得之道2自己的机器视觉中用到canny写了很多版本接近opencv canny所以偶尔做对比时把玩其精髓为何3就是昨天今天用的这个cvtemplateMatch即就是ncc相关系数匹配opencv像一个老朋友陪伴15年了虽然opencv版本已经足够好足够多我还是用这个十几兆的opencv1.0好回归正题匹配关键在速度和稳定性以及精确度这是工业机器视觉的硬指标我们的兴趣在于最初的理想先使用笨方法不拐弯的直觉实现然后一步一步达成上面的三个硬指标好我们先达成第一虽然我们说的是ncc但一写起代码我就惯性思维到轮廓匹配实现走了弯路实际opencv很直接简单人家是模板匹配你非要把自己的轮廓再还原成图像模板再匹配这是退步第二原图不容易旋转只旋转roi图像模板中提炼的轮廓点这个当量极其小而ncc是旋转原图像假定中心旋转roi图像模板不旋转今天想明白这个道理roi图像旋转会出现不必要的补足像素而这些补足像素不在原图中所以匹配失败是必然的好纠正了这两步这就回归了opencv模板匹配正道1我的相机是5472*3648如果在这样的图像里取模板匹配工业现场就得挂机2我们高斯平滑后每4行4列取一个像素图像变成1368*912这就是他们说的金字塔图像3最关键我们就在这个1368*912中取模板并完成匹配为什么这个可以他的原理是高斯核是构建尺度缩放空间变换的唯一线性核尺度空间 图像G(x,y,σ) 定义为原始图像 I(x,y) 与高斯核 σ 的卷积筹备和证明整理-CSDN博客好opencv代码很简单a把1368*912处理成canny图像这里截图出来的模板就是canny图像道理很简单我们用二值特征图像获取模板然后在回二值特征图像匹配b我们完成的是-45度的匹配二值特征图像很方便旋转处理注意2436844这个绿框的起始点我们用来验证匹配结果610211你乘以4等于2440844他返回最大值以上是0度匹配我们看看1度2度3度结果最大值以及对应的坐标这幅图像静止还没动可以知道旋转45度只有0度最好因为opencv给出最大值为最佳匹配结果显然图像动一动比如10度那么再做一次0-45度旋转可以预见10最好!这样我们就简单粗暴的实现了opencv的ncc相关系数匹配opencv 相关系数匹配源代码如下IplImage* pTest8bytecvCreateImage(cvSize(localww1per4,localhh1per4 ),8,1);//使用了8位灰度图像cvSetData(pTest8byte,temp_buffer256192,localww1per4);//测试成功ok201911101905IplImage* cannyimgcvCreateImage(cvSize(pTest8byte-width,pTest8byte-height),8,1);cvCanny(pTest8byte,cannyimg,50,150,3);//cvSaveImage(c:\\opencvcannyimg202407251047.bmp,cannyimg);memcpy(globgaospydoutimgN精细for90,cannyimg-imageDataOrigin,localww1per4*localhh1per4);//canny图像也是255及0二值图像吗// //范例opencv// //读取图像和模板// IplImage* img cvLoadImage(input.jpg, CV_LOAD_IMAGE_GRAYSCALE);//IplImage* templ cvLoadImage(template.jpg, CV_LOAD_IMAGE_GRAYSCALE);IplImage* templ;IplImage* result;//for(int cv0;cv91;cv)//先完成一个0度匹配试一试opencv的函数// {//IplImage*templcvCreateImage(cvSize(globroiww, globroihh ),8,1);//使用了8位灰度图像,模板图像cvSetData(templ, globroiImg,globroiww);////使用 matchTemplate 进行匹配listCvPoint lp ;listdouble lpValue ;for(int m_baoguang0;m_baoguang45;m_baoguang){int 输出w0;int 输出h0;byte * 输出图像;double 弧度m_baoguang*3.1415926/180;//旋转0-45度//请确认是角度弧度//弧度RotateNormal((BYTE *)cannyimg-imageDataOrigin,输出图像, localww1per4, localhh1per4,//1368*912图像输出w,输出h,弧度);//IplImage*result cvCreateImage(cvSize(输出w - templ-width 1, 输出h - templ-height 1), IPL_DEPTH_32F, 1);IplImage* pTest8byteMcvCreateImage(cvSize(输出w,输出h ),8,1);//使用了8位灰度图像cvSetData(pTest8byteM,输出图像,输出w);//测试成功ok201911101905//ncc匹配//这里的cannyimg要旋转并记录每个角度的成绩和位置cvMatchTemplate(pTest8byteM, templ, result,CV_TM_CCOEFF);cvReleaseImage(pTest8byteM);CvPoint minLoc, maxLoc;double minVal, maxVal;cvMinMaxLoc(result, minVal, maxVal, minLoc, maxLoc, 0);lpValue.push_back(maxVal);lp.push_back(maxLoc);}for(int i315;i359;i){}opencv模板学习代码如下IplImage* pTest8bytecvCreateImage(cvSize(localww1per4,localhh1per4 ),8,1);//使用了8位灰度图像cvSetData(pTest8byte,temp_buffer256192,localww1per4);//测试成功ok201911101905IplImage* cannyimgcvCreateImage(cvSize(pTest8byte-width,pTest8byte-height),8,1);cvCanny(pTest8byte,cannyimg,50,150,3);//cvSaveImage(c:\\opencvcannyimg202407251047.bmp,cannyimg);memcpy(globgaospydoutimgN精细for45,cannyimg-imageDataOrigin,localww1per4*localhh1per4);//cannyimg-imageData好于imageDataOrigin,要做测试是否要改byte* roiImage new byte[roiww * roihh];this-globroiImg new byte[roiww * roihh];globroiwwroiww;globroihhroihh;int te roitop * localww1per4 roileft;for (int i 0; i roihh; i)for (int j 0; j roiww; j){globroiImg[i * roiww j] roiImage[i * roiww j] globgaospydoutimgN精细for45[i * localww1per4 j te ];}图像旋转源码机器视觉入门之路十六完成图像旋转c_机器视觉中怎么把左下角的图一到右上角-CSDN博客

相关新闻

中级前端工程师核心能力与面试进阶指南

中级前端工程师核心能力与面试进阶指南

2026/8/25 5:54:50

1. 中级前端工程师的职场定位与能力模型作为前端技术领域的核心岗位,中级前端工程师在团队中扮演着承上启下的关键角色。与初级开发者相比,中级工程师需要具备独立承担模块开发、技术方案设计和跨团队协作的能力。根据行业调研数据显示,具备3…

LLM+知识图谱:从240篇技术文档中挖掘515条隐藏关联的实践

LLM+知识图谱:从240篇技术文档中挖掘515条隐藏关联的实践

2026/8/25 5:54:50

1. 项目缘起:当240篇文档变成一座信息孤岛最近接手了一个挺有意思的内部项目,团队在过去一年半里,围绕着某个核心业务方向,零零散散地写了240多篇技术文档、会议纪要和问题复盘报告。这些文档散落在Confluence、GitHub Wiki和一堆…

《我的世界》极简红石隐藏门设计:8方块实现全平台兼容

《我的世界》极简红石隐藏门设计:8方块实现全平台兼容

2026/8/25 5:44:49

你是不是也厌倦了《我的世界》里那些占地庞大、结构复杂的红石隐藏门?想在自己的生存基地或服务器里设计一个既隐蔽又酷炫的入口,却总被繁琐的线路和昂贵的材料劝退?今天,我要分享一个我自己在生存模式中反复验证过的“极简隐藏门…

Spring Boot构建法律援助系统:从RBAC权限到状态机的业务架构实践

Spring Boot构建法律援助系统:从RBAC权限到状态机的业务架构实践

2026/8/25 6:34:52

你有没有遇到过这样的场景:一个看似简单的管理系统,开发到一半才发现,用户权限混乱、案件流程卡壳、数据统计一团糟,最后不得不推倒重来?这不是危言耸听,而是很多开发者,尤其是接手“法律援助”…

语音识别面试核心:WeNet解码策略与语言模型融合

语音识别面试核心:WeNet解码策略与语言模型融合

2026/8/25 6:34:52

1. 语音算法面试核心要点解析作为一名在语音算法领域深耕多年的从业者,我经历过无数次技术面试的洗礼。语音识别(ASR)系统的核心在于解码策略与语言模型融合,而WeNet作为当前最流行的开源框架之一,其设计理念和实现细节往往是面试官重点考察的…

基于MCP协议构建AI Agent与Power Apps Dataverse集成的实践指南

基于MCP协议构建AI Agent与Power Apps Dataverse集成的实践指南

2026/8/25 6:34:52

想象一下这个场景:你正在开发一个基于 Microsoft 365 的企业内部应用,数据都存储在 Power Apps 的 Dataverse 里。每天,业务部门的同事都会跑来问你:“能不能帮我查一下上个月华东区的销售数据,按产品线做个汇总&#…

动态规划核心原理与面试高频题型解析

动态规划核心原理与面试高频题型解析

2026/8/25 6:34:52

1. 为什么动态规划是算法面试的必考重点动态规划(Dynamic Programming,简称DP)作为算法领域的核心方法论,在技术面试中的出现频率高达78%(根据2023年LeetCode年度报告数据)。其重要性源于三个本质特征&…

立柱拐臂码垛机:中小企业码垛升级的高性价比方案

立柱拐臂码垛机:中小企业码垛升级的高性价比方案

2026/8/25 6:34:52

在建材、化工、粮油等行业的中小型生产企业中,老旧车间空间局促、用工成本高、改造预算有限,是码垛环节自动化升级的核心阻碍。立柱拐臂码垛机凭借紧凑结构、稳定产能与亲民投入,精准匹配中小企业需求,成为产线末端自动化改造的优…

技术面试高效刷题指南:从盲目刷题到建立解题思维模式

技术面试高效刷题指南:从盲目刷题到建立解题思维模式

2026/8/25 6:24:51

这类刷题宝典最值得先看的不是它有多少题,而是它能不能帮你把“刷题”这个动作,从“盲目刷”变成“有效练”。很多人刷了几百道题,面试时还是没思路,问题就出在路径和重点上。谷歌工程师推荐的思路,核心往往不是题量&a…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…