手机屏幕贴合项目(ni视觉如何找矩形的角坐标)

首先,我们存储了cg和dito感兴趣八个角图像的模板,用来匹配位置。

cover指的是cg的四个角模板,lcm是dito四个角匹配模板。

其次,我们采集的8副图像(m_DlgCCDViewArr[2][4])中一定包含匹配模板的特征。

好,我们分析代码如何找角坐标:

第一,m_DlgCCDViewArr[i][j].MatchImage();在图像中找模板

1,调用ni匹配角度限制:MatchPatternOptions options;
    RotationAngleRange rr[2];
    PointFloat poinf;
    float    angle;    
    float angleRangeMin[2] = { pMainDlg->m_MatchOption.anglelower,0 };
    float angleRangeMax[2] = { pMainDlg->m_MatchOption.angleupper,0 };

for (int i = 0 ; i < 2 ; i++)
    {
        rr[i].lower = angleRangeMin[i];
        rr[i].upper = angleRangeMax[i];
    }

2,ni匹配初始设置:

 options.mode =IMAQ_MATCH_SHIFT_INVARIANT;//尺度不变
 options.minContrast =5;// pMainDlg->m_MatchOption.minContrast;最小对比度
    options.angleRanges=rr;角度范围限制
    options.numRanges = 2;
    options.subpixelAccuracy=FALSE;亚像素
    options.numMatchesRequested = 1;
    options.matchFactor =pMainDlg->m_MatchOption.matchFactor;
    options.minMatchScore =pMainDlg->m_MatchOption.minMatchScore; //800;

3,调用ni图像库匹配:(ni喜欢用imaq开头)

 int numMatches = 0;

    PatternMatch* matchInfo=NULL;
    matchInfo = imaqMatchPattern2(m_imgBase, m_imgTemplate, &options,NULL,IMAQ_NO_RECT, &numMatches);//OK

第二,匹配到后,找直线,应该调用ni图像处理库的抓线卡尺: 

1,   this->SearchGauge();

ni图像处理库,还是很复杂,我们捡重点说(我觉得初学用visionpro比较好): FindStraightEdge2();

IVA_FindStraightEdge2(/*roi*/m_rcCurrAreaX,m_AdvEdgeOptionX,l1st,l1en,l1ang);

IVA_FindStraightEdge2(/*roi*/m_rcCurrAreaY,m_AdvEdgeOptionY,l2st,l2en,l2ang);  

2,     imaqGetIntersection(l1st,l1en,l2en,    l2st,&m_Intersection);找到两条线的十字交叉点,其实模板的样子如下:细节上不同

第三,十字交叉点找到了,要通过标定,把像素坐标变换毫米坐标。

这IVA_FindStraightEdge2函数显然是ni的找直线卡尺了,到此,ni的匹配,ni的找直线,和ni的十字交叉点就解释清楚了。

想一想,如果我们自己不用ni,我们最先能实现的肯定是十字交叉点,再就是找直线,初学,匹配肯定是搞不定的。

实际上,在产品万千次生产重复中,我们其实用不到匹配,因为每次的产品细节上不可能差错,显然,以为找直线卡尺有弹性范围,只用直线卡尺,就能搞定问题。因为机器和产品稳定后,轻易不可能动,这个道理是显而易见的。

图像处理算法千千万,当掉落到现实中,我们可能只用那么一点点,所以所有现实的制约,是极有好处的,在自动化中,我们常常会利用这种制约条件,机器视觉也不例外。(所有的制约如果推翻,我们需要重新制造,我们不生产iphone4了,我们要生产iphone4s,iphone5,但实际仍然走的是这条路,大多数是相似,甚至相同,不需要改变,利用制约,顺其自然,一旦我们走上正轨,很多时候,都是在走重复的路,反复的遵从理想而要去创造历史,大多会失败,因为理想是无条件的,新路都是老路上长出来的,好像有人这么说过!)

所以,学习视觉,先懂那么一点点,日积月累。因为人的欲望会把自己压垮,排的满满的,实际是,大多数情况就像,看守机台,大多数情况不会有问题,没事,去小憩一会,一个人看几十台,没一点问题,人生就是这样,如果你在偷的半日闲中,如果领悟了无上的妙理,诗句,或者一点技术,或者一点勇气,其实这辈子就够用了。

其实人生就开挂了,从零到一,从前笨的自己好像变聪明了。

如果有人天天盯着你做事,或者你不放过自己,偷不了那半日闲(小憩),释然的心态去学习,pay attion to 当下(其实就是机器视觉roi),0到1很难跨过去

但无论何时,人生总会从0到1.

其实从机器视觉到人工智能,实际就是iphone4到iphone14,理解这个东西,我花了近十年时间,因为人工智能出现的很多新名词,你都可以在机器视觉(计算机视觉)中找到原型。

原型,prototype。在生产制造中,你经常会看到。我曾经在富士康看到过这个单词,但当时我不认识!

从理想到原型机,这就是我们的人生!

下一节,我们聊一聊图像封装类,待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/758548.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

土体中应力的计算

土中的应力的计算 非水面以下土体中应力的计算&#xff1a;水面以下的土中的应力计算 参考视频&#xff1a; https://www.bilibili.com/video/BV1Rh411J72h/?spm_id_from333.788&vd_source02b2bad477a153eaeb9c48cbbedaf8df 非水面以下土体中应力的计算&#xff1a; 按成…

C++自定义智能指针

template <class T> class counted_ptr;// 智能指针引用计数类 template <class T> class Ref_Ptr {friend class counted_ptr<T>; private:T* m_pTtr; // 实际的指针size_t counted_ptr; // 引用计数Ref_Ptr(T* p);virtual ~Ref_Ptr(); };template <clas…

Golang | Leetcode Golang题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; func numIslands(grid [][]byte) int {res : 0for i : 0; i < len(grid); i {for j : 0; j < len(grid[i]); j {if grid[i][j] 1 {resdfs(grid, i, j)}}}return res }func dfs(grid [][]byte, r, c int) {h, w : len(grid), len(gri…

标准版小程序订单中心path审核不通过处理教程

首先看自己小程序是不是已经审核通过并上线状态才在站内信里面提醒的&#xff1f; 如果没有提交过审核&#xff0c;请在提交的时候填写。path地址为&#xff1a;pages/goods/order_list/index 如果是已经上线的小程序&#xff0c;当时没要求填这个&#xff0c;但新的政策要求填…

如何通过Profile快速定位Doris查询瓶颈

1 如何获取profile 参考文档&#xff1a;https://doris.apache.org/zh-CN/docs/query/query-analysis/get-profile 我们时常遇到对应 SQL 执行时间不及预期的情况&#xff0c;为了优化 SQL 达到预期查询时延&#xff0c;通过 Profile 我们能够看出可以做哪些优化。现在说明在…

为何同一PDF文档用不同软件打印效果不同?

通过扫描仪生成的同一PDF文档&#xff0c;同样的设置&#xff0c;为什么别的电脑打出来是白底我的打出来有灰色格子背景&#xff1f;这种情况通常是由于PDF阅读软件的不同造成的差异。 ### 可能的原因和解决方法&#xff1a; 1. **PDF阅读软件的不同**&#xff1a; - **解决方…

小型光纤抗干扰无人机技术详解

一、光纤通信技术应用 光纤通信技术是现代通信技术的重要组成部分&#xff0c;其在小型无人机中的应用为无人机的数据传输带来了革命性的改变。光纤通信具有高速率、大带宽、低损耗和抗电磁干扰等优点&#xff0c;使得无人机在执行任务时能够实时传输高清图像、视频和大量数据…

[JS]BOM操作

介绍 BOM(Browser Object Model)是浏览器对象模型 window对象是一个全局对象, 也是JS中的顶级对象通过var定义在全局作用域中的变量和函数都会变成window对象的属性和方法window对象下的属性和方法调用时一般省略window 间歇函数 定时器 定时器是间歇函数的一种, 可以每个每…

《昇思25天学习打卡营第2天 | 昇思MindSpore张量 Tensor》

第二天学习 1.今天学习了张量 Tensor&#xff0c;了解到Tensor是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;也是一个特殊的数据结构&#xff0c;与数组和矩阵非常相似。是MindSpore网络运算中的基本数据结构。学些了张量和稀疏张量的属性…

Node版本管理工具 fnm 安装使用

fnm 是一个基于 Rust 开发的 Node 版本管理工具&#xff0c;它的目标是提供一个快速、简单且可靠的方式来管理 Node.js 的不同版本。同时&#xff0c;它是跨平台的&#xff0c;支持 macOS、Linux、Windows。&#x1f680; Fast and simple Node.js version manager, built in R…

五十九周:文献阅读+FiLM

目录 摘要 Abstract 文献阅读&#xff1a;用于长时间序列预测的频率改进的勒让德记忆模型 一、现有问题 二、提出方法 三、相关知识 1、Legendre Projection&#xff08;Legendre投影&#xff09; 2、Fourier Transform&#xff08;傅立叶变换&#xff09; 四、提出的…

文件操作与管理

程序经常需要访问文件和目录&#xff0c;读取文件信息或写入文件信息&#xff0c;在Python语言中对文件的读写是通过文件对象&#xff08;file object&#xff09;实现的。Python的文件对象也称为类似文件对象或流&#xff08;stream&#xff09;&#xff0c;因为Python提供一种…

数据库-数据完整性-用户自定义完整性实验

NULL/NOT NULL 约束&#xff1a; 在每个字段后面可以加上 NULL 修饰符来指定该字段是否可以为空&#xff1b;或者加上 NOT NULL 修饰符来指定该字段必须填上数据。 DEFAULT约束说明 DEFAULT 约束用于向列中插入默认值。如果列中没有规定其他的值&#xff0c;那么会将默认值添加…

ProPainter – AI视频去水印工具,可以去除视频中的静态水印、动态物体/人物等 本地一键整合包下载

ProPainter是一个基于E2FGVI实现的AI视频编辑工具&#xff0c;它可以一键移除视频内的移动物体和水印。这个开源项目提供了一个简单而强大的解决方案&#xff0c;帮助用户轻松编辑和改善视频内容。 项目地址&#xff1a;https://github.com/sczhou/ProPainter 一键包下载&…

【C++初阶 ---- string类】文档介绍 | 容量操作 | 模拟实现

string介绍 前言1. C语言中的字符串2. 标准库中的string类2.1string类对象的容量操作2.2string类对象的访问及遍历操作访问操作 [ ]和at string底层模拟实现 前言 其实 string 就是一个管理字符数组的顺序表&#xff0c;因为字符数组的使用广泛&#xff0c;C 就专门给了一个 s…

mac系统docker默认不支持host主机网络模式

环境描述&#xff1a;在mac系统上安装docker及docker-compose服务&#xff0c;并且打算搭建一个redis集群 问题描述&#xff1a;mac默认不支持host网络模式&#xff0c;导致集群无法通过外部主机访问 具体验证步骤&#xff1a; docker-compose.yml如下&#xff1a; version…

山东省著名烈士孙善师孙善帅故居布展喜添新篇

人海信息网山东讯&#xff08;张春兄、冯爱云&#xff09; “……他们以钢铁般的意志&#xff0c;坚守共产党员的使命&#xff0c;他们就是泺口九烈士的孙善师孙善帅兄弟&#xff01;”6月28日&#xff0c;对于山东省著名烈士孙善师孙善帅故居来说&#xff0c;又是一个不平凡的…

二、安装虚拟机

本篇来源&#xff1a;山海同行 本篇地址&#xff1a;https://shanhaigo.cn/courseDetail/1805875642621952000 本篇资源&#xff1a;以整理到-山海同行 一、官网下载centos7 1. 进入CentOS 官方网站 官方网站&#xff1a;https://www.centos.org/download/ 2. 选择iso 点击下…

基于Delphi编写PC上位机串口通信工具

1&#xff09;Delphi入门级小知识&#xff0c;分享给将要学习或者正在学习Delphi上位机开发的同学。 2&#xff09;内容属于原创&#xff0c;若转载&#xff0c;请说明出处。 3&#xff09;提供相关问题有偿答疑和支持。 Delphi&#xff0c;是Windows平台下著名的快速应用程…

python(基础语法,pandas,numpy,正则表达式,数据预处理)

python学习推荐网址&#xff1a; 白月黑羽 一、语法基础 目标&#xff1a; • list、tuple、set、dict的基本用法 • 内置函数 len&#xff08;&#xff09;&#xff0c; eval&#xff08;&#xff09;&#xff0c;range&#xff08;&#xff09;&#xff0c;sort&#xff08;…