尽管有检测结果输出面板可以显示输出变量结果,但是由于面板可显示的数据数量有限,很多重要的数据可能无法在检测完成以后显示,只能输出到文件或外部设备。从机器视觉大师6.0版开始,用户可以通过程序脚本将检测算子读数或其它重要数据输出给标记控件,实现重要读数显示功能。本章介绍如何通过编程实现将检测算子读数显示到视场窗口。
标记控件分为标记点、直线(箭头)、文字标签、评论标签、图形和图片控件。每种控件支持一种或多种属性如颜色、箭头形状、文本内容,可以通过程序中改变。下面是详细介绍如何实现检测算子读数显示到视窗窗口的过程。
1. 建立一个虚拟相机,其图像源为“示例和主题文档”目录中的“samples\banapart”子目录,当前视场名称为sight2(注意:请以实际创建的名字为准)。
2. 更改手动触发相机,外部设备更改为“无外部设备”, 检测类型设为“默认”。
3. 添加通用BLOB算子到该视场,设置相应的参数如下图:
切换到“读数”页,将cnt, sr,cp读数设置为“仅计算不输出”。
4. 添加标记点,直线箭头控件各一个,添加两个文本标签控件,将名字分别修改为wz, jd。另外增加两个文本标签控件,作为当前控件的标题。
在视场导航栏,可以看到控件信息如下:
点击树形框的文本标签,选中以后,点击鼠标左键, 弹出如下下拉菜单:
点击“设置参数”菜单项,弹出“文字”窗口,输入“显示内容”为“当前位置”。
点击“字体属性”按钮,弹出“字体属性”窗口,设置好颜色和字体样式等参数以后,点击“确定”按钮,完成设置,并回到“文本”窗口。
点击“确定”按钮,完成当前文本标签参数的设置。重复前面的步骤,设置其它几个标签的属性。整个视场窗口的设计如下图:
5. 点击“模式->设置”菜单,弹出“选项”窗口,切换到“检测变量”窗口,设置检测类型为“默认”。
选中数值2变量,选中“作为检测工艺参数”复选框, 修改新名称为“箭头长度”,初始值为66,点击“修改”按钮,最后点击“确认”按钮完成设置。
6. 点击“模式->编辑脚本”菜单,弹出“编辑脚本”窗口,在“检测分析后”事件里面输入如下脚本:
if (sight2.blob1.cnt > 0) then
local pt = sight2.blob1.cp[1]
sight2.pos1.x = pt.x + sight2.blob1.left
sight2.pos1.y = pt.y+ sight2.blob1.top
sight2.line1.x1 = sight2.pos1.x
sight2.line1.y1 = sight2.pos1.y
sight2.line1.x2 = sight2.pos1.x + cos( sight2.blob1.sr[1]) *var.n[2]
sight2.line1.y2 = sight2.pos1.y + sin( sight2.blob1.sr[1]) *var.n[2]
sight2.wz.text = nxt(sight2.pos1.x, 0) .. ", " .. nxt(sight2.pos1.y, 0)
sight2.jd.text = nxt(sight2.blob1.sr[1], 1)
end
上面的脚本对当前视场sight2里面的blob1的cnt度数进行判断,如果数量大于0,那么将第一个BLOB的质心坐标加上blob1本身位置以后,赋值给sight2的pos1的位置标记控件的x和y属性。然后,同视场的line1箭头线控件的端点1,设置为同样的值。 根据blob1的斜率和作为工艺参数的变量n[2]的值计算line1箭头线控件的端点2的位置,并完成赋值。
将位置控件pos1的x,和y坐标转换成文本并连接到一起,赋值给wz文本控件的text属性。将blob1的sr斜率(角度)转换成文本后,赋值给jd文本控件的text属性。整个事件脚本如上图所示。
点击“确定”按钮,完成脚本编写。
7. 点击“相机->检测运行”菜单,进行模拟检测晕运行。弹出“手动触发检测”窗口,如下图:
点击“下一个”按钮,可以看到视场窗口的位置控件和箭头线根据执行位置发生变化,同时,wz和jd文本标签的显示内容也发生相应的变化。
a. 位置和角度显示(文本标签) b. 质心和角度标记(点标记和箭头线)
本文测试使用的AvizMaster版本为6.0.1228
最新版AvizMaster(机器视觉大师)下载地址:http://www.hdy.net.cn/softshare/ddcam.htm
技术交流QQ群: 295860595 技术支持QQ: 2437711859 微信:a18028535399