发布时间:2026/8/25 5:54:35
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:49:35

基于Figma API与MCP思想的设计稿数据提取与结构化实战

在实际前端开发流程中,设计稿与代码实现之间的鸿沟一直是影响开发效率的关键瓶颈。设计师在 Figma 中完成精美的界面,而开发者则需要手动测量间距、提取颜色、复制文案,这个过程不仅繁琐,还容易出错。随着 AI 辅助开发工具的兴起&…

2026/8/25 5:49:35

从传统客户端到AI智能体平台:DeepSeek Harness迁移实战指南

最近在技术圈看到不少关于“客户端迁移”的讨论,其中池建强老师停掉维护两年的客户端,全面转向 DeepSeek Harness 的案例,引起了我的兴趣。这背后反映的,远不止一个技术栈的切换,而是开发范式、团队协作和工具链效率的…

2026/8/25 8:09:56

Unity 对象追踪:实现“闭环管理”的一套大白话实战

做 Unity 项目久了你会发现,最难查的 bug 不是崩溃,而是"东西没了但内存还在"、“对象销毁了还有人调用它”、“池子借出去的对象再也没还回来”。这类问题的根源都是同一个:对象的生命周期失控了。这篇文章用大白话讲讲怎么给对象上一套"闭环管理"。 一…

2026/8/25 8:09:56

移动端 Shader 变体治理实战:从爆炸到可控

如果你做过移动端项目,大概率被 Shader 变体坑过:包体莫名其妙大了几百 MB,低端机内存爆红,进战斗第一帧卡成幻灯片。这篇文章聊聊 Shader 变体这件事,以及一线团队到底是怎么把它治住的。 一、先理解问题:变体为什么会"爆炸" Shader 变体的本质是组合爆炸。每…

2026/8/25 8:09:56

Java Stream limit()方法:从短路求值到性能优化的核心实践

1. 项目概述:为什么limit()是Stream操作中的“黄金分割点”在Java 8引入Stream API之后,数据处理的方式发生了根本性的变化。从传统的命令式、循环驱动的模式,转向了声明式、函数式的流水线操作。在这个全新的范式里,limit(long m…

2026/8/25 8:09:56

Python交互式Web框架:Streamlit、Gradio、Dash、Hyperdiv

概述 本文搜集几个流行的后端友好、基于Python语言、交互式Web框架,可实现无需过多前端开发技能,几行代码实现一个MVP展示界面,可应用:数据可视化、原型快速开发、机器学习数据探索等诸多场景。 Streamlit 官网,开源…

2026/8/25 8:09:56

Unity Shader变体爆炸?75%问题不在你的代码

写在前面 很多人一遇到"包体里 Shader 变体爆炸"的问题,第一反应就是去抠自己业务代码里的 multi_compile。结果改了半天,变体数纹丝不动——因为找错了地方。 先看一组真实项目里的变体来源分布: 来源 占比 引擎内置变体(光照/阴影/雾/Lightmap 组合) ~45% 美…

2026/8/25 8:04:56

SAP ABAP利用SMW0与CL_FDT_XLSP实现Excel模板化报表生成

1. 项目缘起:当标准ALV报表无法满足业务需求时在SAP ABAP的日常开发中,我们经常需要生成格式复杂、样式多变的Excel报表。标准的ALV输出到Excel功能(REUSE_ALV_GRID_DISPLAY或CL_SALV_TABLE)虽然方便,但在面对固定表头…

2026/8/25 1:04:19

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

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

2026/8/24 1:12:32

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

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

2026/8/24 8:17:29

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

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

2026/8/25 0:04:14

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

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

2026/8/25 0:04:14

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

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

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

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

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

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

2026/8/25 1:08:14

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

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