VisionPro 脚本可以定制或扩展 QuickBuild 的功能,主要表现在以下几个方面:

  1. 根据其他工具的运行结果有条件的运行视觉工具
  2. 对视觉工具的执行结果进行附加计算
  3. 创建或定制可重复利用的工具

QuickBuild应用程序中,有三种类型的脚本:

  1. ToolGroup 脚本: 在 ToolGroup 中添加脚本,可以控制 ToolGroup的运行行为
  2. Job 脚本: 作业脚本可以对取像过程进行控制,设置取像参数,控制取像行为,例:设置曝光、频闪、自动对焦等
  3. ToolBlock 脚本: ToolBlöck 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断

 三种脚本的具体功能和继承关系以及类成员

ToolGroup

功能: 能够控制 ToolGroup 中的每一个视觉工具的单独执行,并能控制它们的执行的先后顺序,而且可以调整各个视觉工具的输入输出.例如:你可以利用 Patmax 工具测得的 scale 结果来调整caliper 工具的输入参数每一个 Job 中至少含有 1 个ToolGroup (默认为 1个) ,当含有多个 ToolGroup 时,每个 ToolGroup 都可以有自己的独立脚本,各个 ToolGroup 脚本之间不会相互影响.

继承关系及类成员: ToolGroup脚本( CogToolGroupBaseScript)继承于 ICogToolGroupScript

CogToolGroupBaseScript 的含有如下成员:

  1. ToolGroup :可以通过这个成员来获得控制脚本程序的CogToolGroup
  2. Initialize: 当你关闭脚本编辑器、编译脚本或从一个 Vpp 文件加载脚本的时候会调用此方法
  3. GroupRun: 在 ToolGroup 运行时,如果还回值设为 True ,这个方法将会运行, Visionpro 将运行此 ToolGroup 中的所有工具;如果还回设为Fálse ,将由用户来编写代码来运行 ToolGroup 中的工具,请注意,一般使用 toolGroup.RunTool 来运行 TooIGroup 中的工具而不是视觉工具中的 Run 方法
  4. ModifyLastRunRecord: 当 TooIGroup 创建 Last Run Record 的时候会调用此方法,你将可以通过重写此方法来向现有的Last Run Record 中添加新的 records 或 graphics.

CogToolGroup 的含有如下成员:

  1. RunTool : 运行 CogToolGroup 中的单个工具,仅能通过 GroupRun 方法来调用 RunTool 方法,并且 GroupRun 需要为之提供消息和结果参数
  2. Tools: 此属性还回 ToolGroup 中的工具集
  3. AddGraphicToRunRecord: 在上面所介绍的 ModifyLastRunRecord 中运用 AddGraphicToRunRecord 方法,你可以将graphics 添加到 Last Run Record 中
  4. DefineScriptTerminal,GetScriptTerminalData,SetScriptTerminalData: 在 ToolGroup 中,可以用 DefineScriptTerminal 创建终端,并可以利用 GetScriptTerminalData 和 SetScriptTerminalData与终端进行数据交互.

注意: 为了能够在 TooIGroup 脚本中独立运行视觉 tools ,可以使用toolGroup 的 Tools 属性引用视觉工具,

第一种方式:通过索引,

第二种方式:是通过工具名称.

一般来讲,通过名称来引用视觉工具更为方便,因为你可以为其定义有实际意义的名称,以便于理解和记忆.例如:

CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools["CogBlobTool1"];//通过名称

CogBlobTool _cogBlob = (CogBlobTool) mToolBlock.Tools[4];//通过索引

使用脚本的一个重要原因就是利用常规 QuickBuild 用户接口来对工具运行的结果进行计算非常困难,例如,计算多个工具的运行结果.不过可以在脚本中来实现此功能,在 ToolGroup 脚本中,为了使计算结果作为一个值输出,您需要定义输出终端.终端的定义方法是在 Initialize 函数中调用 toolGroup 的 DefineScriptTerminal 方法,终端定义成功后,终端的名称将出现在 ToolGroup 输入输出树中,可以将之连接到其他的工具上.

 Job

功能:

相比较 ToolGroup 脚本, Job 脚本使你能够使用 CogJob 对象,你可以利用 Job 脚本改变取像过程,例如:设置曝光、频闪、自动对焦、每取一次像改变一次取像参数.

继承关系及类成员:

Job 脚本( CogJobBaseScript)继承自 ICogJobScript 类

CogJobBaseScript 有如下成员:

  1. job: 通过此成员可以获得控制您脚本的 CogJob
  2. AcqFifoConstruction: 这个方法在"取像 FIFO" 与作业建立联系的时候调用,你可以通过它来一次性设置"取像 FIFO"
  3. PreAcquisition: 这个函数在 StartAcquire 之前调用,以给你在取像之前改变"取像 FIFO" 的机会
  4. PostAcquisition: 这个函数在 CompleteAcquire 之后调用,以给你在取像之后改变"取像 FIFO" 的机会
  5. PostAcquisitionRef: 这个函数和 PostAcquisition 类似,但是 image 是以引用的方式传递,如果这个方法返回 Ture , VisionPro 将处理这个 image,如果这个方法返回 False ,这个 image 将不被处理, QuickBuild 接着取下一个 image ,这可以使你能够在处理所取的多个 image 之前将它们联合在一起.(如果 PostAcquisition 和 PostAcquisitionRef 都被重写,PostAcquisition 将被忽略.)

ToolBlock

ToolBlock 脚本使你可以定制或扩展视觉工具的功能,或者对工具的运行结果进行逻辑判断,当你使用应用程序向导的时候,所有的 ToolBlock 脚本都会移撞到 Visual Studio 应用程序中

使用场景:

  1. 动态创建输入/输出的时候
  2. 获取 CogToolBlock 中所有视觉工具的全部 API 接口的时候
  3. 需要向 Record 中添加 Graphic 的时候

关系总结

一个ToolGroup包含一个(或多个Job),一个Job包含一个(或多个ToolBlock)

提示: 

//声明图形集合  CogGraphicCollection   一些关于 图形的 都可以放进去 
  CogGraphicCollection col = new CogGraphicCollection();

//声明圆  CogCircle 
CogCircle mCircle = new CogCircle();
 //设置颜色
      mCircle.Color = CogColorConstants.Red;
      //设置半径
      mCircle.Radius = 15;
      //设置圆心
      mCircle.CenterX = 
      mCircle.CenterY = 
      //设置圆线条 的像素宽度
      mCircle.LineWidthInScreenPixels = 2;
	col.Add(mCircle);

//声明 图形标签
 CogGraphicLabel mLabel = new CogGraphicLabel();

//颜色
 mLabel.Color = CogColorConstants.Red;
//坐标和显示内容 
 mLabel.SetXYText(200, 200, "Result:NG");


//声明 线段  CogLineSegment 
CogLineSegment  xianduan = new CogLineSegment();
//需要传入 两个 点 两个点才能 形成线段

//声明多边形
 CogPolygon polygon = new CogPolygon();
//传入参数
polygon = blob.Results.GetBlobs()[i].GetBoundary();
//设置粗细
 polygon.LineWidthInScreenPixels = 10;
//设置颜色
 polygon.Color = CogColorConstants.Red;

//声明外接矩形
 CogRectangleAffine rec = new CogRectangleAffine();
	//位置
        rec.CenterX = (listX[i + 1] + listX[i]) / 2;
        rec.CenterY = cal1.Results[i].Edge0.PositionY;
	//宽度
        rec.SideXLength = width;
	//高度
        rec.SideYLength = 100;
	//颜色
        rec.Color = CogColorConstants.Red;

//显示的时候 需要 遍历   图形集合 
for (int i = 0; i < col.Count; i++)
    {
			  mToolBlock.AddGraphicToRunRecord(col[i], lastRecord,                   "CogPMAlignTool1.InputImage", "script");
}

GitHub 加速计划 / vi / vision
15.85 K
6.89 K
下载
pytorch/vision: 一个基于 PyTorch 的计算机视觉库,提供了各种计算机视觉算法和工具,适合用于实现计算机视觉应用程序。
最近提交(Master分支:3 个月前 )
518ee93d 8 天前
7d077f13 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐