视觉小六
毕业于武汉大学计算机硕士专业
1.用labview超过5年,精通工控领域,精通操作者框架
2.精通opencv和halcon算法
展开
-
labview强制转换的一个坑
仔细看,枚举的数据类型是U16,"1"的数据类型是U32,所以转换产生了不可预期的结果。所以使用强制转换时一定要保证两个数据类型一致,否则产生不可预期的结果。32位整形强制转换成枚举的结果如何?原创 2024-04-29 16:46:33 · 598 阅读 · 1 评论 -
labview中TDMS读写波形图
TDMS与二进制读写速度区别不大,但是它具备关系型数据库的一些优点,经常用于存取波形数据。原创 2024-04-26 08:00:00 · 348 阅读 · 0 评论 -
OpenG中的读写簇函数
4.禁用写入,更改簇的元素,增加或者删除,原来的数据依然可以读取。那么这个函数的优势就体现出来了,在更改簇元素的情况下,原来的数据依然可以重新读取,这样就不用重新设置之前的参数。其实这个读写原理就是查找筛选再赋值,找不到就不赋值,保持默认值。2.找到openG中的读写ini函数,第一组是将簇标签作为段名,第二组是指定段名,本质上都是一样。1.首先需要在Vi Package Manager中安装Open G。3.读写簇到ini文件。原创 2024-04-25 08:45:00 · 74 阅读 · 2 评论 -
labview中如何更快的生成数组
方式一:使用For循环索引创建数组,耗时24ms;方式二:使用"创建数组"函数创建数组,耗时77ms。方式三:使用替换数组子集创建数组,耗时22ms;所以结论是避免频繁地改变数组长度。原创 2024-04-24 09:28:56 · 290 阅读 · 2 评论 -
labview中数字字符串限定输入
主要利用了labview中的过滤事件机制。当字符不是十进制字符串的时候放弃赋值,即禁止输入。labview中的用户界面事件有两种类型:通知事件和过滤事件。废话不多说,直接上代码。原创 2024-04-22 08:30:00 · 144 阅读 · 2 评论 -
labview中循环停止事件的深入研究
第一次值事件运行的时候空白按钮给的F值,第二次值事件运行的时候空白按钮给的T值,这时循环才真正结束。值事件发生以后超时事件将T值赋值给结束条件,也是从同时进行变成了顺序执行。赋值和值改变事件从同时进行变成按顺序执行。原创 2024-04-21 17:25:08 · 324 阅读 · 0 评论 -
labview中的同步定时结构
单帧定时循环定时比较精确,最常用的功能还是它的定时循环功能,定时循环允许不连接“循环条件”端子,可以连接定时循环“结构名称”端子,通过定时结构停止函数停止循环。原创 2024-04-14 16:32:44 · 332 阅读 · 0 评论 -
labview中FP.isFrontmost不生效?
如果主GUI程序使用“floating”,子GUI程序使用default动作,则子GUI无法打开到最前。子GUI程序只能使用“模态”才能置顶。主GUI界面中调用子GUI程序FP.isFrontmost不生效?改正的方法很简单,主GUI程序使用“default”方式即可。置顶的优先级是:模态》浮动》默认。原创 2024-04-11 20:46:41 · 87 阅读 · 0 评论 -
labview中0.42-0.5+0.08=0结果如何?
结果不稳定,这是因为同其他编程语言一样,labview中的浮点数也存在精度损失的问题,只有2的N次方的浮点数可以精确表示原创 2024-04-05 22:27:13 · 51 阅读 · 0 评论 -
labview如何创建2D多曲线XY图和3D图
使用“索引与捆绑簇数组”函数将多个一维数组捆绑成一个簇的数组,然后将结果赋值给XY图,这样一个多曲线XY图就生成了。也可以自己去手动索引,手动捆绑并生成数组,结果是一样的。在三维图形找到三维线条图形,分别给XYZ数值赋值即可。使用过程非常简单,比其他语言easy很多!1如何使用labview创建2D多曲线图。原创 2024-04-04 13:36:47 · 728 阅读 · 0 评论 -
labview中6种机械动作的区别
3.单击时转换保持到鼠标释放:触发两次,自动恢复原来状态;相当于文本语言的pressed和released;2.释放时转换:释放时时转换,需要手动转换或者赋值回复原来状态;1.单击时转换:单击时转换,需要手动转换或者赋值回复原来状态;6.保持触发直到鼠标释放:触发两次,刷新控件后恢复原来状态;4.单击时触发:单击时转换,刷新控件后恢复原来状态;5.单击时触发:释放时转换,刷新控件后恢复原来状态;相当于文本语言的pressed和released;原创 2024-03-13 22:12:22 · 345 阅读 · 0 评论 -
labview中三种执行方式的区别
2.预分配副本重入执行:每个线程运行的是这个子VI的副本,其具有单独的数据空间。labview的很多内部函数节点都是可重入执行的,像加、减、乘、除等基本运算函数。其次,修改预分配副本的程序框图必须切换到编辑模式。1.非重入执行:当两个线程同时调用同一子VI时,需要让先满足数据流条件的子VI得到调用权,另外一个线程必须暂时等待,等到上一个线程结束调用时,才能得到调用的控制权。3.共享副本重入执行:在需要的时候创建一个副本,运行完毕之后关闭。需要特别注意的是未初始化的移位寄存器会统一共享数据空间。原创 2024-03-12 09:47:20 · 259 阅读 · 0 评论 -
labview的常用小技巧
1.切换:labview中控件函数与函数选板的使用非常频繁,而使用菜单来调用他们非常不方便。最简单的调用方法是:右击前面板,弹出控件选板;然后按住Ctrl+E组合键,即可快速在前面板和程序框图之间切换。2.克隆:用鼠标左键选择控件或者控件集合,按下Ctrl键后拖动鼠标,可以直接创建新的控件或控件集合,这种方法称为克隆。对于已经存在的局部变量,通过剪切板复制是不行的,因为粘贴后会创建一个新的控件及局部变量。3.分支切换:对于事件分支或者选择结构分支,可以Ctrl+滑动鼠标滚轮进行事件分支的快速切换;原创 2024-03-11 15:04:20 · 147 阅读 · 0 评论 -
labview高低拼接的理解
计算机的一个字节由8位组成,无符号的8位整形表示的范围为0~255,范围太小了,所以用双字节,即16位整形表示更大范围的数字0 ~65535。2.labview中的高低拼接实质是高8位字节左移8位与低8位字节相加,结果是双字节整形。原创 2024-01-28 22:09:23 · 254 阅读 · 0 评论 -
labview中如何提高halcon图像的匹配成功率,准确率和速度
之后做了很多项目,发现halcon的识别准确度确实比labview的高。labview的形状匹配GeometricMatch准确度也不低,但是只能应对小图像,比较适合500万以及五百万以下的工业相机。1000万相机/2000万相机创建模板的时候金字塔建议用5,匹配的时候用5-6两种金字塔。1.500万相机创建模板的时候金字塔建议用4,匹配的时候用4-5两种金字塔。金字塔越大,特征越少,匹配的成功率越高。2)缩小匹配角度,halcon的angleExtent指的是终止角度减起始角度。1)缩小搜索区域ROI。原创 2024-01-21 22:02:09 · 271 阅读 · 0 评论 -
labview树形控件的使用
left cell string 为第一列内容,child text 为后续每列的内容。child position为默认0表示添加的是父项。child postion表示添加子项的位置,child only表示只能添加子项。value表示当前项,删除当前项后树形控件指向前一项。代码在附件里面,代码已经经过验证!原创 2024-01-14 22:44:01 · 660 阅读 · 2 评论 -
影响labview程序性能的几个因素
6.labview最好不要使用外部UI控件,尽量使用labview自带的UI。像c#的datagrid的表格控件设甚至会导致软件崩溃!labview是天然的多线程程序,一个超时分支或者一个while循环即是一个线程,要想程序写的好,运行快,必须注意超时分支的代码,4.不能在循环或者超时分支中频繁地使用属性节点,比如fit to panel和zoon to fit等等。2.不能在循环或者超时分支中频繁地读写本地文件,尽量一次读取,多次调用。3.不能在循环或者超时分支中频繁地改变数组长度和字符串的长度。原创 2023-11-13 17:17:19 · 394 阅读 · 0 评论 -
自己做过的几种笛卡尔坐标系定位
还有一种方式是找到上下相机原点重合处作为右起点,右终点-右起点+视觉位置之差。放料:定位好XY放料的时候可能存在固定偏差,料越高,Z轴移动距离越大,偏差越大。使用示教点补偿即可,即示教终点-起点+视觉补偿=相对运动距离,补偿以基准为偏差。3.下相机固定拍起点,上相机活动拍终点,使用吸嘴吸物料。取料:以相机中的某个点为定位基准,不断靠近基准;起点不需要拍物料,因为物料相对夹爪在Y方向固定。任何放料都需要考虑到起点和终点的误差。起点补偿到视觉基准,终点为理论终点。终点-起点+视觉补偿。原创 2023-09-27 10:28:41 · 89 阅读 · 0 评论 -
使用labview做的一个软键盘
可以对窗口位置进行设定,代码在附件中,键盘的视觉效果也不错,适合触摸屏使用。原创 2023-09-06 22:47:36 · 295 阅读 · 2 评论 -
labview如何使用代码控制窗口位置
但如果要通过代码来控制,首先我们想到的是如下的程序框图,但结果是一下左,一下右,窗口出现的位置没达到预期。无论是否生成exe,结果都是不稳定。还有一个方法可以控制窗口的位置,实验结果稳定,如下图所示,用到的函数就是“窗口边界”。将窗口设置在屏幕的不同位置,可以使用VI属性来自定义位置,如下所示。原创 2023-09-05 23:11:10 · 486 阅读 · 0 评论 -
适用于任何语言的编程心法
3.要学会善用工具,能不写算法就不写算法。工具的稳定性和效率在绝大部分情况下比自己写的好,要善于借鉴别人的智慧,提高编程效率,用多出的时间享受人生!1.当我们的程序原来越大,越写越多的时候也要学会删除不常用的变量,不常用的ui,不常用的方法。2.要学着整理归类模块,删除不常用的模块\n多余的程序会成为日后维护的重大阻碍。原创 2023-08-29 00:23:10 · 55 阅读 · 0 评论 -
将其他exe嵌入labview程序
2.将其他exe嵌入labview程序需要用到windows的uer32.dll库函数,实现的思路是用FindWindowA找到本VI窗口句柄和exe窗口的句柄,然后用FindWindowExA找到labview窗口的子句柄,子句柄也就是图片框的窗口句柄。然后用SetParent函数将图片框窗口句柄设置为exe窗口句柄的父句柄。1.本文所运用到的控件为.net里面的图片框或者网页浏览器,两者都可以达到一样的效果。最后的效果如图所示,在WebBrowser控件里面可以操作微信等exe。原创 2023-07-26 16:30:33 · 2233 阅读 · 7 评论 -
labview各种赋值方式的深入研究
结论是移位寄存器>>全局变量>>局部变量>>属性节点。1.使用移位寄存器累加100万个数,耗时1ms;4.使用全局变量累加100万个数,耗时4ms;原创 2023-07-24 17:36:56 · 637 阅读 · 0 评论 -
labview阻塞模式
labview语法心得原创 2023-07-22 16:22:53 · 126 阅读 · 0 评论 -
使用labview置顶其他exe窗口
与其他exe窗口交互原创 2023-07-22 15:57:42 · 755 阅读 · 0 评论 -
三点码盘坐标算法
示教码垛的三个点即可获得码垛的每个点的坐标原创 2023-07-22 15:09:40 · 184 阅读 · 0 评论 -
使IMAQdx实现图像异步采集基本模型
本文附件使用labview2019编写原创 2023-06-30 10:21:42 · 192 阅读 · 0 评论 -
在垂直视野中倾斜坐标轴的插补运动算法
使用labview2019实现的带角度运动过程原创 2023-06-11 18:17:35 · 98 阅读 · 0 评论 -
使用labview求无规则圆的质心算法
4.用Particle Analysis求解质心,求出的质心为(2436.87,1562.31),和find circle edge的方法对比,求出的像素最大差了9个像素,但是二值化的过程对光照比较敏感,所以求质心的方法对成像一致性要求高,通用性一般。无规则圆不同于椭圆,椭圆是对称的,无规则圆则不是对称的。如下图所示,用shape detection的ellipses是求不出无规则圆的质心的。用find circle edge的方法求出的圆心为(2444.68,1553.97)1.用mask去掉背景。原创 2023-06-11 15:01:25 · 310 阅读 · 0 评论 -
labview自主学习OCR字符
labview自带的Vision OCR training.exe很好用,但是模板收集有时候很难一次性收集完毕,尤其是字符不规范,字体不清晰的时候,那我们可以边生产边让员工收集,这样子就大大减少了人工收集的时间。2.读取OCR字符集,设置字符分割属性,Max Charactor太小会导致字符分割不成功,分割不成功训练肯定失败!3.制定好ROI,逐个训练字符。1.使用闭运算去掉干扰边缘。4.写入字符集,清除句柄。原创 2023-06-07 10:46:09 · 753 阅读 · 1 评论 -
Hex String如何转化为数字
可打印十六进制能够正常显示用labview自带函数“十六进制数字字符串至数字转换”就行。以二进制的形式表示,第一位为1,表示负数。原创 2023-06-03 11:47:18 · 473 阅读 · 0 评论 -
操作者练习-ABC三个程序相互控制
项目的设计思路是改变操作者A的控制灯,可以对BC两个操作者的显示灯实现操作;改变操作者B的控制灯,可以对AC两个操作者的显示灯实现操作;改变操作者C的控制灯,可以对AB两个操作者的显示灯实现操作原创 2023-05-29 10:54:18 · 91 阅读 · 1 评论 -
labview调用halcon匹配详解
halcon的匹配比labview自带的匹配快了十倍不止,labview需要调用halcon则需要调用自带的.net构造库,下面先讲解步骤再贴源码,本文使用的halcon是2019 32位,labview是2019 32位。原创 2023-02-21 19:25:05 · 1819 阅读 · 6 评论 -
使用labview 的http协议实现post和get,带解析
1.创建一个新项目,右键点击我的电脑,新建web服务,然后就弹出web资源和启动VI2.web资源新建一个VI HTTPMethed 1.vi,用来相应post data的数据,右键可以显示方法url,HTTPMethed 1内容如下:3.右键启动VI,创建一个http post get.vi,可以用来post数据,内容如下:4.在项目里面打开两个VI,右键web service1点击启动,两个VI同时运行,readpostdata读取json数据,然后还原5.get方法比较简单,返回2原创 2021-01-12 16:55:41 · 18564 阅读 · 1 评论 -
使用labview进行自动对焦
非标自动化领域相机自动对焦的实现原创 2023-02-12 13:57:59 · 677 阅读 · 2 评论 -
使用labview制作漂亮的按钮
制作按钮最重要的是风格一致,本文教你如何制作简单的白蓝风格按钮:1.在网上随便找一张.PNG图片,将图片用白,蓝描绘作为底片;2.绘制一个浅灰色底片,深灰框架的图片,图片的大小是600600;3.将步骤1的图片粘贴到步骤 2的图片中,注意大小;4.给步骤3的图片的背景着蓝色1;5.给步骤3的图片的背景着蓝色2;.6.给步骤3的图片的背景着蓝色3;7.新建一个自定义按钮,使用系统风格的按钮,将下图中的1,2,3,4对应填上步骤3,4,5,6的图片。按钮大小调成6060,这样一个简单的原创 2021-07-01 17:11:32 · 2288 阅读 · 0 评论 -
使用labview创建本地服务器
网上关于使用labview创建本地服务器的例子比较少,所以特地写了篇文章给大家参考。1.在项目里面右键创建web服务,在web资源里面新建VI;2将方法改成post,post和get本质是一样的,只不过post用的比较多。3.在web service1里面将输出设置改成缓冲流;4.给新建的VI httpmothod 1书写逻辑,write response对应步骤3的缓冲流;5.右键点击webwervice1,发布该程序,本地服务器新建完成;6.右键点击httpmothod 1.vi显原创 2021-07-01 15:42:34 · 1808 阅读 · 0 评论