当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

VisionPro脚本教程——ToolGroup脚本显示圆半径

上一篇文章咱们说了VisionPro三种脚本的功能,今天就用实际案例来做个例子,大家看看效果。在实施之前先说一下脚本程序,VisionPro的脚本编译器不够智能,不能完全像visual studio一样智能提示,所有需要使用者对代码非常熟悉,否则你都不知道怎么错的。

首先我们新建一个job,里面放一个圆的图片,图片我就不发了,大家在网上随便搜一个就行。

然后使用image processing工具目录下的CogImageConvertTool图像转换工具转换下图像类型,visionPro要求必须是8位灰度图。

然后使用找圆工具找到圆,我们在终端就能看到一些圆的数据了,比如中心坐标,半径等等,如下图所示

VisionPro脚本教程——ToolGroup脚本显示圆半径

VisionPro脚本教程——ToolGroup脚本显示圆半径

然后打开工具组脚本,选择C#,在打开的脚本编辑器中我们可以看到一个用户脚本类UserScript它继承于工具组脚本基类CogToolGroupBaseScript,这个类里面有四个方法,工具组运行时执行的方法GroupRun、工具组创建图像时执行方法ModifyCurrentRunRecord、工具组创建最后运行图像时执行方法ModifyLastRunRecord、以及脚本初始化执行方法Initialize。

我们只需要在最后运行结果中显示,所以只需要工具运行时方法与最后运行结果方法。

由于使用了找圆工具,所以先添加命名空间using Cognex.VisionPro.Caliper;(注意:不止要声明命名空间,还需要引用程序集)

VisionPro脚本教程——ToolGroup脚本显示圆半径

VisionPro脚本教程——ToolGroup脚本显示圆半径

然后在这个类里声明两个全局变量(我的命名比较随意)

 private double zhi;//半径
private CogFindCircleTool sss;//找圆工具

在GroupRun方法中写上如下

sss = (CogFindCircleTool) toolGroup.Tools["CogFindCircleTool1"];//取得找圆工具对象
zhi = sss.Results.GetCircle().Radius;//取得半径值

然后在ModifyLastRunRecord方法中创建一个标签,让它显示在图像中

 CogGraphicLabel ResultLabel = new CogGraphicLabel();//创建标签对象
string labelStr = string.Format("半径={0:F2} pixel", zhi);//格式化半径值,双精度转换为字符串
ResultLabel.SetXYText(sss.Results.GetCircle().CenterX , sss.Results.GetCircle().CenterY, labelStr);//设置标签所
在坐标,我这里使用的是圆心所在位置,第一个参数X,第二个参数Y,第三个参数显示内容
ResultLabel.Color = Cognex.VisionPro.CogColorConstants.Red;//设置标签颜色
toolGroup.AddGraphicToRunRecord(ResultLabel, lastRecord, "CogImageConvertTool1.OutputImage", "script");//将标签
添加到图像转换工具的最后输出图像上

然后编译发布,运行工具组看看效果

VisionPro脚本教程——ToolGroup脚本显示圆半径

VisionPro脚本教程——ToolGroup脚本显示圆半径

感觉很棒!可以赞赏支持我哟~

赞(15) 打赏

评论 8

  1. #3

    你好,如果要取得读码工具CogIDTool的结果,是字符数据,赋值的语句是怎样写呢?

    请问企鹅企鹅1个月前 (01-08)回复
    • C#或者VB中字符串怎么赋值你就怎么写。

      daimadog1个月前 (01-08)回复
      • ID = (CogIDTool) toolGroup.Tools[“CogIDTool1”];
        jg=ID.Results.ToString() ;
        我这样得到的不是CogIDTool1读码的数据,请问应该怎么改呀?

        请问企鹅企鹅1个月前 (01-08)
      • 你没理解到怎么从visionPro工具中取得数据的,我前面有写文章怎么取数据,仔细看看。

        daimadog1个月前 (01-08)
  2. #2

    你用的visionpro什么版本啊!为什么8.3的显示不了

    liu2个月前 (01-04)回复
    • 我用的8.2,这跟版本没多大关系,一般是你代码写错了,脚本没有错误提示。

      daimadog2个月前 (01-04)回复
  3. #1

    你好,请问载入Job(0)后能用代码更改选择图片吗?

    3个月前 (11-06)回复
    • 可以,但是要修改图片就不能使用整个job.run方法,需要按顺序依次运行每个工具。

      daimadog3个月前 (11-08)回复
×

请作者吃根烤肠!

支付宝