卡尺与定位测量的例子
流程图如下:
效果如下:
可以看到其实是模板匹配后再仿射变换定位,再使用卡尺测量宽度、找圆工具找两个圆。
QiuckBuild可以快速完成这些操作,这也是被称为QuickBuild的原因。
如果halcon完成这些的话,确实要花比较长的时间。
来说说算子吧:
Image Source
这里发现visionPro支持一种扩展名为idb的文件,貌似是图片数据库,包含多张图片。这种文件格式确实没见过,勇哥感觉比较稀罕。
下面哪里如果是手动输入文件名路径的话,要回车一下才会生效哦。
CogPMAlignTool
这个工具是用于模板匹配的,勇哥也很想知道效果跟halcon的比起来究竟谁更好,这个要以后多做项目才知道。
下图画红框那里,Current.TrainImage是注册模板后的轮廓,如果这里空白,则表示没注册成功哦。
另外,那个原点xy指示图标是可以鼠标拖动位置的,它称为“训练原点的位置”,这个有什么鬼用,还不知道。
矩形框也可以鼠标移动旋转绽放,它被称为“训练区域”
算法列表如下图,教程里用得都是默认的(选中那个),以后再体会算法的差别。
参数设定好后,点击“抓取训练图像”,再点击训练就可以生成模板。
“忽略极性”是什么鬼还不知道。
这个算子还会识别图像模糊程度,如果你选择一张模糊的图片进行训练,则会报相关警告信息。
CogFixtureTool
这个工具其实就是做坐标仿射变换。
在流程图里我们看到模拟匹配的x,y,u传到这个算子的 UnfitureFromFixturedTransform中进行矩阵运算。
它输出的OutputImage就是已经被变换坐标后的图像了。
后面的算子就可以在工件放歪的时候能保证其检测框对跟随工件的角度进行变化了。
这个工具本例子取的默认参数。啥都不需要设置了。
CogCaliperTool
卡尺工具听说是visionPro的骄傲,不过勇哥觉得halcon的 measure_pos算子进行一些包装似乎也可能达到类似的效果。
当然考虑到勇哥接触visionPro不久,实际差别待以后多进行一些项目后再补充些新的体会。
卡尺寸的矩形框是可以鼠标任何三变换的(移动、旋转、缩放)。
边缘极性跟halcon的measure_pos是一样的。
但这个例子里我们求的是“边缘对”,直接就给出了距离(单位像素)。
如果是求单个边缘的话,是否会生成一组点,然后交给拟合直线算子去拟合出直线?(以后再研究吧。)
CogDistancePointPointTool
很简单的功能,做点到点的距离计算。
还记得两点间的距离怎么算吗? ,高中的知识吧。
不过两头卡两个点算距离,感觉没有两条边计算距离靠谱,原因是取样数量的问题。
CogFindCircleTool
找圆工具,其实有点像halcon的二维测量算子。
那个测量框控制点比较多,确实不容易拉到我想要的位置与大小,需要点时间适应。
CogResultsAnalysisTool
在C#与visionPro混编时,可以在C#中读取到它定义的变量。
在流程图中用这个,我真不知道能干嘛,勇哥删除掉它程序也没什么问题。
注意,在运行画面上显示的文字结果信息,并不是这个工具输出的。
混编时类似于下面这样用法:
CogResultsAnalysisTool cogResultsAnalysisTool1 = new CogResultsAnalysisTool(); cogResultsAnalysisTool1 = (CogResultsAnalysisTool) toolGroup.Tools["CogResultsAnalysisTool1"]; cogResultsAnalysisTool1.Result.Decision;
编写脚本,以显示需要的结果
这个演示程序通过内嵌脚本显示文字、卡尺结果轮廓、圆的结果轮廓。
如下的效果:
内嵌脚本按下面的红框按钮进入编辑。
这个简易编辑环境不太好用,主要是语法补全太弱,有点为难勇哥这样被vs突破性宠惯事了的人。
勇哥直接把演示程序的内嵌脚本复制粘贴过来了。
这里会可能出现编译通不过的问题
错误如下,
错误的原因是你缺少一些dll的包含。
下图是演示程序包含的dll。
下图是我参照演示程序引用了缺少的dll。
再编译就可以通过了!
编辑脚本时,第一次选择错了脚本语言怎么办?
可以点击删除脚本
再次点击编译脚本时,又会让你选择是VB,还是C#了!
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

