2020-04-09 15:26:33
工业相机是机器视觉系统中的一个关键组件,其本质的功能就是将光信号转变成为有序的电信号,将这个信号 A/D 转换并送到处理器后就可以处理、分析、识别。选择合适的相机也是机器视觉系统设计中的重要环节,相机的不仅是直接决定所采集到的图像分辨率、图像质量等,同时也与整个系统的运行模式直接相关。2.1 工业相机的发展工业相机核心的部件就是图像传感器,分为 CCD(Charge Coupled Devices...
2020-04-09 14:36:38
本篇文章已加密,请输入密码后查看。...
2020-04-09 10:18:20
时间长了,勇哥忘记了怎么在github上新建仓库后上传本地项目代码了。在这里记录一下。(1) 你创建成功仓库后,有一个新建仓库克隆用的地址,复制它。(2)使用git工具,在你工程目录名字上右键,选择划线的项目。然后弹出git命令行(3)使用下面的指令git init 初始化本地代码仓库的git
git remote add origin 刚才要你复制的新建仓库地址:...
2020-04-08 16:28:11
勇哥把上一次的流程图版的MTV改了一下,这是最终版,各位看看效果吧。与上一版不同的是如下几点:(1)可以docking,也就是窗体停靠(2)mtv主功能的form是做为一种插件被载入的在下面的演示中,大家看到mtv的搜索功能,是通过流程“搜索歌曲”来完成的。这个搜索功能用流程图来画,也只是作为一种演示而矣。在这个基础上,可以开发视觉相关的代码活动了,以添加视觉相关的工具。源码下载链接:------...
2020-04-08 14:47:37
例如下面的WFDesign,它是一个接口IWFHost。 public IWFHost WFDesign = null;如果你在Run上面按F12键,只会跳到接口IWFHost的定义Run上去。这样子是不是让你很恼火呢?^_^那么如何才能跳动接口IWFHost的实现类对应的函数上去呢?如果你是vs2015以上版本,那么你可以 右键->转到实现(快捷键:Ctrl+F12)即可。勇哥用vs201...
2020-04-07 21:50:52
这篇贴子是看了一套网上的手眼标定的培训视频后的记录。大凡是培训视频,都存在废话很多的问题,关于这一点,其实也是跟你自己的知识储备多少有关,比如对于小白来讲,也许每一句话都不是废话。本贴就是勇哥记录下来的认为其精华部分内容。评心而论,老师讲得不错,很有经验,虽然经常在中间插播自己的培训室广告。^-^----------------------------------------大家都知道,手眼标定就...
2020-04-07 21:05:20
G代码功能说明指令格式G00快速定位G00 X__ Y__ Z__G01直线插补G01 X __ Y __ Z__;一般直线插补模式 N100 G01 X__ Y__, C__N105 G01 X__ Y__ ;转角倒角模式,C__ :假想转角处到倒角切削开始点或终点的距离 N100 G01 X__ Y__ ,R__N105 G01 X__ Y__ ;...
2020-04-07 20:59:13
近日项目需要,PLC中添加直线差补类的功能,第一次接触GRBL,做个大致概括。 Grbl是一款针对Arduino/AVR328芯片的嵌入式G代码编译和运动控制器。所以说GRBL分为两部分:上位机部分和下位机部分1.上位机部分:GRBL Controler 用QT编译的,作用是:GCODE编译器,类似于串口提示助手的功能,通过串口传递G指令给下位机很多DIY做雕刻机或者打印机的都需要用到此款软件,...
2020-04-07 16:50:32
今天有个网友问到这个add_metrology_object_line_measure算子没有角度参数,怎么做roi跟随。勇哥网站上搜索了一下,还真没有写过这样的贴子,因此制作了一个小例子,给有需要的朋友参考。代码比较简单。用了形态模板匹配来定位roi位置。第一张图用来定义了模板。中间那几个变量 a,b,c,d,e,f,g,h是roi四个边的顶点。那一部分代码实际上的作用是:已知rectangle...
2020-04-07 10:53:48
* This example demonstrates the functionality of segment_image_mser.
*
* Create artificial example image.
create_example_image (Image)
*
dev_update_off ()
dev_close_window ()
dev_open_window_...
2020-04-07 10:47:37
segment_image_mser(Image : MSERDark, MSERLight : Polarity, MinArea, MaxArea, Delta, GenParamName, GenParamValue : )segment_image_mser使用最大稳定极值区域(MSER)方法将图像分割成灰度值均匀的区域。分割过程通过观察周围的局部区域来判断一个区域是否是均匀的。因此,该算...
2020-04-06 21:23:05
1、摄像机外参:决定摄像机坐标与世界坐标系之间相对位置关系。其中Pw为世界坐标,Pc是摄像机坐标,他们之间关系为Pc = RPw + T式中,T= (Tx,Ty,Tz),是平移向量,R = R(α,β,γ)是旋转矩阵,分别是绕摄像机坐标系z轴旋转角度为γ,绕y轴旋转角度为β,绕x轴旋转角度为α(也可以从左像右看把它理解为先绕x轴旋转α,再绕旋转后的坐标系的y轴旋转β,最后绕再次旋转后的z轴旋转γ)...
2020-04-06 21:16:28
StartCamParam (input_control)数阵-> (实数/整数)Camer type 为:'area_scan_division''area_scan_polynomial,,area_scan_telecentric_division,,area_scan_telecentric_polynomiar'line_scan'(类型不同...
2020-04-06 20:55:57
摄像机分为两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera)。准确来说,叫摄像机系统比较正确。所谓的面扫描摄像系统是指可以通过单纯曝光取得面积影像,而线扫描摄像机,必须利用运动速度才能取得影像。两种不同的摄像系统由于成像的过程有区别,所以标定的过程也有区别,这里仅讨论面扫描摄像系统。流程如下: 1、初始摄像机参数:startCamP...
2020-04-06 20:37:43
勇哥先放上代码,有空时再研究一下。* Attention:
* This program reads the interior camera parameters from the file
* 'camera_parameters.dat', which, e.g., could be generated by the program
* 'camera_calib...
2020-04-06 20:13:39
勇哥先上程序,后面再解释:list_files ('E:/calibration_image', 'files', ImageFiles)
TmpCtrl_AllMarkRows := []
TmpCtrl_AllMarkColumns := []
TmpCtrl_StartPoses := []
TmpCtrl_ReferenceIndex := 0
S...
2020-04-06 17:10:18
两根线的起始点端点值如下:1065.69,1190.38,1054.0,1193.51065.86,1190.35,1054.0,1194.0这个坐标看上去是不是几乎一样,在0.5个像素的差别内。那么两线的角度是不是就应该差不多呢?dev_close_window()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)...
2020-04-06 08:52:49
十年前,勇哥玩51单片机,现在时代变了,越来越高端了。搞一篇扫盲贴子,涨点见识。--------------------几十年前的电子爱好者,最喜欢的就是电烙铁、面包板和收音机;十几年前,出现了单片机,于是玩具就成了电烙铁、面包板和单片机;到了2015年,贴片技术的不断普及,让面包板不再那么有用武之地,经济的发展也让现成的板卡价格降到了一个合理的范围,购买现成的电路板,甚至自己打样电路板来使用,已...
2020-04-04 08:37:16
对于标定来说,一般常见的有用于测量的线性与非线性标定,另一类就是和运动相关的标定,手眼标定。勇哥写过许多epson机器人的手眼标定,也有halcon仿制这种方式的实现方法。但是halcon有自己的手眼标定。CalibObjDescr := 'calibrate_hand_eye_scara_setup_01_calplate.cpd'
CalibrationPlateThickn...
2020-04-03 17:27:27
今天在群里聊起这个halcon内存泄露的问题。有几点要注意的地方,在此记录下来。(1)hobject要Dispose,htuple也要Dispose这一点以前没有注意,好像是受了官方一个贴子影响认为htuple不用管。但是hlacon导出的C#代码里面,就注意到了这一点,htuple也要Dispose。(2)被塞入List的halcon对象,注意不能直接List.Clear()如果你这样做,内存就...
2020-04-03 11:35:22
“给岁月以文明,而不是给文明以岁月”,大刘在《三体》小说的这句话曾经让勇哥读到的那一刻思想飞了好远。今天突然在网上看到有人提到这句话,立刻搜索了一下大家对它的理解,摘了一篇有共鸣的附上。我的理解是:文明的灿烂与否并不是以时间来衡量的,宁可获得短暂的灿烂文明,而不愿苟且偷生。这句话出自帕斯卡的:给时光以生命,而不是给生命以时光。(To the time to life, rather than to...
2020-04-02 22:16:07
尝过在虚拟机安装visionMaster试用版没?结果是下面这样的。真是无语,我们农民工只是想多试用几天罢了。看来,还是专门搞个不联网的电脑,30天后全盘重做系统总行了吧。另外,勇哥电脑是工作站,64G内存,可不可以划分十几G来安装一个操作系统呢?如果用这个操作系统再来安装visionMaster会怎么样? 断电后啥都没了,会不会就可以了呢?好兴奋的想法啊~~...
2020-04-02 21:21:22
接上篇《 用autocad来验证标定原理(1)》上节把CCDA标定完成了。实际的生产过程中,我们常常会碰到这样的情况,机械手从工位一吸着对象到工位二进行贴合,但是工位二我们不方便执行标定,通常的做法是在工位一执行一次标定流程,然后使用两点映射或者四点映射把工位二的相机坐标映射到工位一的相机一中。所以下面的我们继续做CCDB的标定部分。我们先把坐标系切换到机器人坐标系。为了画映射板的图形。我们接下来...
2020-04-02 14:43:21
勇哥曾经很向往有一台机器人,好在家里搞些视觉实验。可惜这东西值一台四轮车的钱,估计真买了的话,会被老婆按在地上摩擦。其实仔细想想,视觉对位的应用,难点在于标定、还有标定后的对位过程,而不在于怎么找线找点(当然有些时候这个也是难点,但是跟物料关系密切,也就是变成了解决工艺上的问题,不存在原理都不懂的的懵逼)标定的过程主要难点在机器人吸盘的中心和法兰盘的中心不共心,还有些应用中涉及到多相机协调,如果B...
2020-04-02 09:48:48
大家在运用CAD的时候可能会经常遇到需要将原坐标系转换为自己需要的坐标系,现在教大家如何运用。正常情况下我们拿到的CAD图纸是这样的,但是我们需要把他转换成我们需要的样式。如这样:这样的话看起来就会更直观更舒服一些。1、在命令行输入UCS,然后空格确认,就会出现如下图的提示2、根据提示我们输入N,选择新建坐标系,就会出现如下图的提示3、根据提示我们输入3,此步骤依据个人喜好输入,这里我们以3为例,...
2020-04-01 16:31:14
声明:本文为转载GentlerMan朋友的ApolloStudio系列的文章,所转载图片水印为系统自动添加,并没有盗用其版权的用意。在激光标记领域已越趋成为自动化行业中在质量追溯体系管控环节不可或缺的重要一环的今天,传统的标记方式已不能满足于各类综合性比较强的项目需要了,从而结合越来越多新技术的案例也变得更多了起来,现在我们将一起探讨下机器视觉图像匹配定位技术与传统的激光标刻相结合的一个案例(本文...
2020-04-01 08:58:09
*重要理解一下这个几个算子
* dev_update_off ()
* dev_update_on ()
* dev_update_pc ('off')
* 计算区域的总数,使用count_obj()算子...
2020-04-01 07:34:52
程序调用十张不同光照下的图片,尝试找ncc模板,求取模板位置。最后计算结果的标准差。代码如下:* This example program shows how to use HALCON's correlation-based
* matching. In particular it demonstrates the robustness of this method against...