文章目录
- VisionPro 脚本教程专栏:深入理解与实践。
- 目录
- 1. 脚本简介
- 1.1 VisionPro 项目组成
- 1.2 脚本的作用
- 2. 脚本类与方法
- 2.1 ToolGroup 脚本类
- 2.2 ToolBlock 脚本类
- 2.3 Job 脚本类
- 3. 脚本使用案例
- 3.1 Job脚本:自动调节曝光时间
- 3.2 ToolBlock脚本:显示Blob区域的中心坐标
- 4. 脚本进阶
- 4.1 脚本作为“插件”程序集
- 4.2 事件与委托
- 5. 脚本调试与优化
- 5.1 使用Visual Studio进行调试
- 5.2 语法错误与逻辑错误
- 5.3 调试技巧
- 结语
VisionPro 脚本教程专栏:深入理解与实践。
VisionPro 是康耐视公司推出的一款功能强大的机器视觉软件,它通过脚本功能允许用户实现定制化的视觉处理逻辑。
目录
- 脚本简介
- 脚本类与方法
- 脚本使用案例
- 脚本进阶
- 脚本调试与优化
1. 脚本简介
在 VisionPro 的 QuickBuild 开发环境中,Job 是工程的基本组成单位。每个 Job 中可以包含多个工具和工具块(ToolBlock),而脚本功能允许用户在这些组件的基础上实现更高级的逻辑控制。
1.1 VisionPro 项目组成
- Job:工程的基本组成单位,可以看作是一个独立的任务。
- ToolGroup 和 ToolBlock:工具的“容器”,用于封装具有特定功能的一组工具。
1.2 脚本的作用
脚本在 VisionPro 中的作用类似于编程语言中的函数,它允许用户根据特定需求编写自定义的逻辑代码,实现工具的自动化控制和数据处理。
2. 脚本类与方法
VisionPro 通过多态技术实现脚本功能,每个 Job、ToolGroup、ToolBlock 对象都含有一个接口对象,用户可以通过重写接口方法来实现自定义功能。
2.1 ToolGroup 脚本类
以 ToolGroup 脚本为例,它继承自 CogToolGroupBaseScript
,实现了 ICogToolGroupScript
接口。该接口定义了以下方法:
Initialize()
GroupRun()
ModifyCurrentRunRecord()
ModifyLastRunRecord()
2.2 ToolBlock 脚本类
ToolBlock 脚本与 ToolGroup 类似,但提供了更高级的控制,如动态定义输入输出终端等。
2.3 Job 脚本类
Job 脚本用于控制与图像获取相关的设备属性与参数,基类为 CogJobBaseScript
,实现 ICogJobScript
接口。
3. 脚本使用案例
3.1 Job脚本:自动调节曝光时间
在图像采集过程中,根据图像的亮度自动调节曝光时间是一个常见的需求。以下是使用 Job 脚本来实现这一功能的示例:
public override void PreAcquisition()
{
ICogAcqExposure IExposure = job.AcqFifo.OwnedExposureParams;
IExposure.Exposure = exposure;
}
3.2 ToolBlock脚本:显示Blob区域的中心坐标
ToolBlock 脚本可以用于控制工具的运行逻辑,修改生成的 Record,拓展数据逻辑等。以下是在 Blob 区域显示其中心坐标的示例:
public override bool GroupRun(ref string message, ref CogToolResultConstants result)
{
mLabels.Clear();
mToolBlock.RunTool(mBlob, ref message, ref result);
CogBlobResultCollection blobs = mBlob.Results.GetBlobs();
foreach(CogBlobResult blob in blobs)
{
CogGraphicLabel tempLabel = new CogGraphicLabel();
tempLabel.Alignment = CogGraphicLabelAlignmentConstants.BaselineCenter;
tempLabel.SetXYText(blob.CenterOfMassX, blob.CenterOfMassY, $"{blob.CenterOfMassX},{blob.CenterOfMassY}");
tempLabel.Color = CogColorConstants.Red;
mLabels.Add(tempLabel);
}
return false;
}
4. 脚本进阶
脚本不仅是“填空题”,更是实现复杂逻辑的强有力工具。用户可以通过脚本实现事件响应、异常处理、数据逻辑处理等高级功能。
4.1 脚本作为“插件”程序集
脚本类会被编译为程序集加载到内存中,并且每次编辑后都会重新编译。这意味着脚本的性能和稳定性直接影响到整个 VisionPro 程序的运行。
4.2 事件与委托
在脚本中实现事件响应函数时,需要增加异常处理机制(Try…Catch),以避免程序运行出现异常。
5. 脚本调试与优化
调试脚本是确保其正确运行的重要步骤。以下是一些调试技巧:
5.1 使用Visual Studio进行调试
可以通过 Visual Studio 附加到 VisionPro 进程进行调试,这样可以在脚本出错时快速定位问题。
步骤如下:
- 打开Visual Studio软件,
继续但无需代码
,
- 选择
附加进程
(前提是vision pro在运行着) - vision pro点击运行即可
5.2 语法错误与逻辑错误
语法错误会在编译时提示,而逻辑错误则需要在运行时通过调试来发现。
例如:下面工具查找到多个结果,在脚本中引用时直接用结果[ ].
来调用,而不是item
5.3 调试技巧
- 使用断点进行单步调试。
- 检查变量值和程序流程是否符合预期。
- 使用日志记录关键信息,便于问题追踪。
结语
VisionPro 脚本是实现定制化视觉处理逻辑的关键,通过本专栏的深入学习,你应该能够掌握脚本的编写、使用和调试。在后续的文章中,我将分享更多关于 VisionPro 高级功能的脚本实现技巧。
希望本专栏能够帮助你在机器视觉领域更进一步。如果你有任何问题或建议,欢迎在评论区留言。
注意:本教程基于康耐视官方文档和网络资源编写,建议读者结合实际软件操作进行学习。同时,对于软件的深入理解和应用,官方文档和社区支持是不可或缺的资源。