如上图,要定位每个USB口的位置,用PMAlign工具可以很容易实现。
但是存在一些不美的问题:
如果把ROI放大到整张图像,数据不太容易进一步使用。
如果把ROI框一个一个的拉出来,有点无聊。并且如果产品数量变化,需要重新做一个检测程序。
利用VisionPro提供的脚本功能对付这种规律分布的产品非常有效。可以在一定程度上实现程序的封闭,维护、扩展更加方便。
使用c#脚本配合模板定位即可以实现测量和显示功能。
思路是:从左到右逐个检测;一次检测一个重复区域;利用脚本改变ROI的位置,每次将新的ROI更新到PMAlign工具中。
代码示例,在作业脚本的GroupRun方法中做以下更改即可。
CogRectangle roi; //搜索区域
CogPMAlignTool toolPM= newCogPMAlignTool; //模板工具
toolPM = toolGroup.Tools ["CogPMAlignTool1"]asCogPMAlignTool;
for( inti= 0;i < 16;i++) //16是检测目标的数量,改成变量替代比较好
{
/*
ROI是矩形框
实例化ROI
定义矩形框的位置和大小
此处,ROI的X方向的位置是变化的
改成变量做到外边比较好
*/
roi = newCogRectangle;
//roi.X = 21;
roi.Y = 16;
roi.Width = 118;
roi.Height = 525;
roi.Color = CogColorConstants.Blue;
roi.X = 21+ i * 122.5;
toolPM.SearchRegion = roi;
toolPM. Run;
if(toolPM.Results.Count > 0)
{
//显示匹配到的目标
CogCompositeShape myGraphic = newCogCompositeShape;
myGraphic = toolPM.Results [0]. CreateResultGraphics(CogPMAlignResultGraphicConstants.All);
myGraphics. Add(myGraphic);
}
//显示ROI
myGraphics2. Add(roi);
}
以上案例是针对PMAlign工具的,同样的方法可以移植到卡尺等其他工具。