运行程序前先创建ROI以创建模板,然后顺时针或者逆时针绘制三根直线,以确定找线的方向与距离。由于找线的时候是模板跟随的,最后得到下面的结果:代码如下:其中draw_rake,dev_display_shape_matching_result,rake,pts_to_best_line为外部算子。有需要的朋友可以找勇哥索取。dev_close_window ( )
read_image (Image, 'C:/Users/Administrator
halcon17的找线功能其实是对之前halcon10版本找线方法的封装。勇哥下面这几篇文章介绍了halcon10版本的找线方法,你会发现,halcon17的找线算子的参数其实跟这篇文章介绍的差不多的。Halcon学习(27-2)halcon测量技术:找线带ROI跟随的找边测试代码(halcon代码演示)经过封装后的找线算子,还是非常好用的,你只需要给定找线的起始与终止点即可。演示代码如下:read_image (Image, 'G:/pic2/8.bmp')
(一)绘制数组的图形如下图,我测量电池的左右宽度,其结果生成在数组DistanceAry中。在之前的halcon版本中,双击数组弹出一个列表检查数据。如果想查看数据的曲线图,你得把数据导出到excel中。现在可以像下面这样了。不用把数据导入到excel中绘图了。(二)待续……--------------------- 作者:hackpig来源:www.skcircle.com版权声明:本文为博主原创文章,转载请附上博文链接!
勇哥在把netMarketing类库由halcon10改为halcon17时,遇到载入halcon窗口时报下面的错误:无法在 DLL“halcon”中找到名为“HLIIsUTF8Encoding”的入口点。经检查,是因为程序的bin目录下缺少halcon17的halcon.dll这个文件。也就是说,只把halcondotnet.dll文件换成halcon17的是没有用的。其实,最保险的就是把halcon17的全部dll文件复制到你程序的bin目录,这样绝对可以解决问题。当你的程序由ha
勇哥手头上的C#工程要由基于halcon10视觉的改为halcon17版的视觉。更换的原因是因为halcon17比较新比较潮,不能落伍…… 其实是因为halcon10的窗体控件以及内存泄露方面有些问题。勇哥在这里记录一下以备忘。首先把halcon17的下面两个目录下的dll全部复制到你程序的bin目录下面。然后在你的程序中,凡是用到halcondotnet的引用,全部删除,引用新版的。版本号如划线处所示17.12.0.0在你的代码中,凡是用到“GigEVision”的都改成“GigEvision
机器人的X轴与Y轴做垂直运动时,其夹角应该近似90度,否则机器人需要做回原点进行修正。勇哥是这样进行验证的:在吸盘上放置一个标定版,方便取得一个特征点。在视野范围内做一个L型的3个点的运动,正好让XY方向进行了相互垂直的运动。取得这3个点的像素坐标。把坐标用下面的程序计算一下,求得角度。read_image (Image, 'C:/Users/Allegro/Desktop/1.bmp')
WindowHandle := 3600
p1
接上篇。本篇讨论下面的话题:二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的放料精度下面是采用特殊算法标定成功后的数据。后面主要谈谈怎么用旋转特征点的方式验证标定后的精度。因为手眼标定是把视觉像素换算成机器人的机械坐标,而本算法的原理是:把工具坐标1做到特征点上,然后走4组位置,记录4组像素与机械坐标,最后调用halcon的标定函数。因此对于这种标定方式来说,验证工具坐标1是否可靠就是关键地。而验证方法就是围绕特征点进行旋转,理论上来说围绕工具坐
所谓的精度是指验证标定后工具1坐标系下的特征点,转为机械坐标系后再与机器人的坐标进行差值比较,越小越好。验证精度我们可以从三方面入手:一是验证特征点在视野最大范围内变换位置,考虑相机畸变因素影响下对精度的影响二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的带料取放料精度。勇哥在本篇先讨论第一种方法。下面是标定后的特征点的信息标定特征点信息 像素x:1051.772 像素y:1424.155 机械x: 371.424923596072 机械y: -
1. 仿射变换类型 仿射变换有:平移、旋转、缩放、斜切(就是将斜体字导正)。2. 求稳定的特征点 要进行仿射变换,必须先获取变换矩阵。要获取变换矩阵,必须先获取特征点坐标、角度等信息,几何匹配和bolb是获取特征点的高效方法,除此之外还有其它方法,只要能稳定的求出特征点即可。 3.仿射变换流程 (1.)获取特征点坐标、角度
以前在使用算子OpenFramegrabbe连接相机时,一般是这样的:open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', 'defa