步骤
先看工程长什么样
用「项目 → 打开工程」打开随包的「图像处理示例.vq」(在 strategypool/ 目录下)。它只有一条 flow-1:图像源(ImageSource)→ 椭圆查找(EllipseFinder);界面「页面 1 / 区域 1」上也只有两个组件:标签(Label_1)和图像处理(ImageProcess_2)。也可以照着下面几步从空白策略搭一遍。
配好本地文件夹源
标题栏 Logo →「硬件配置」→「相机」页 →「+ 添加」→ 类型「本地文件夹」。示例里源标识是 localFolder-1,「文件夹路径:」指向随包的 testimg/ 目录,「批量读取:」2、「播放间隔 (ms):」1000,勾「循环播放」,扩展名保持 .jpg;.png;.bmp;.tif。点「连接」确认校验通过,再点「应用」,提示「硬件配置已应用,重启相机服务生效」。
放图像源节点,选源配置
工具库「图像源」分类拖「图像源」到画布,输入「源配置」选 localFolder-1,输出「图像」留着连下游。这个节点本身不产生图片,它只把硬件配置里那个源取到的帧送进流程——所以路径问题要去硬件配置里查,别在节点属性里找。
放椭圆查找节点,连两条线
从「定位」分类拖「椭圆查找」:一条数据连线把「图像源.图像」接到「椭圆查找.图像」,一条执行顺序连线把图像源排在椭圆查找前面。参数保持示例值:边缘阈值 50、最小点数 2、过滤面积 10。仅需处理画面局部时,可在「矩形ROI」中框定范围;随包示例工程已包含一个矩形 ROI。
拖两个界面组件
主界面按 F2 进编辑模式:从组件库「基础类」拖「标签」,从「扩展类」拖「图像处理」。示例里标签是 120×32、居中、字号 14;图像处理组件 690×630,标题「图像处理」,「显示输入预览」「显示输出预览」「显示缩略图」三个开关都打开。按 Esc 退出编辑模式。
把运行信息绑到标签
选中标签,在「属性面板」找到「文本」属性,点旁边的连接按钮(提示「点击选择连接的参数」)。在「参数连接」对话框里选「输出参数」,「工作流节点」选「图像源」,「输出参数」选「运行信息」(resultInfo)。运行后标签显示流程的运行信息,设计时写的默认文本 Success 会被覆盖。
把节点预览绑到图像处理组件
选中图像处理组件,属性「预览节点」是 ToolNode 类型:它绑的是某个流程节点,不是某个输出参数。在「参数连接」里选到「椭圆查找」这个节点即可。这一步与上一步的「输出参数绑定」是两种不同的绑定,别在「输出参数」里找预览。
运行验证并保存
工具栏点「运行一次」:图像处理组件左侧出现输入预览、右侧出现带椭圆标记的输出预览,标签显示运行信息;换成「循环运行」会按播放间隔逐批换图。确认无误后用「项目 → 保存」(Ctrl+S)写回 .vq 工程。
工程结构一览
整份工程可以拆成「一条流程 + 一个硬件源 + 两个组件 + 两条绑定」。看懂这张表,后面换节点、换组件都能照着推。
| 位置 | 内容 |
|---|---|
| 流程 flow-1 | 图像源 → 椭圆查找(执行顺序连线 + 图像数据连线) |
| 硬件源 | localFolder-1,本地文件夹,循环播放 |
| 页面 | 页面 1 / 区域 1,网格吸附开启 |
| 组件 | 标签 Label_1、图像处理 ImageProcess_2 |
| 绑定 | 标签.文本 ← 图像源.运行信息;图像处理.预览节点 ← 椭圆查找 |
椭圆查找的参数与输出
参数都在节点的属性面板里改,示例值可以直接作为起点。一次只改一个参数,改完跑一轮对比,比一口气全调容易判断。
| 参数 / 输出 | 示例值 | 说明 |
|---|---|---|
| 图像 images(输入) | 连线输入 | 来自图像源的「图像」输出 |
| 边缘阈值 edgeThreshold | 50 | Canny 边缘阈值;调低更容易出边缘,也更容易带进噪声 |
| 最小点数 minPoints | 2 | 拟合椭圆所需的最少轮廓点 |
| 过滤面积 minArea | 10 | 小于该面积的轮廓会被丢掉 |
| 矩形ROI / 圆ROI / 椭圆ROI / 多边形ROI | 示例中画了一个矩形 ROI | 只在框内找;不画就按全图找 |
| 运行结果 resultCode | — | 0 表示成功 |
| 运行信息 resultInfo | — | 可直接绑到标签这类文本组件 |
| 图像 images(输出) | — | 带标记的结果图,可继续往下游传 |
| 椭圆数 ellipseCount | — | 找到的椭圆数量 |
| 中心X / 中心Y / 长轴 / 短轴 / 角度 / 分数 | — | 每个椭圆的测量值,向量输出 |
| 椭圆区域 roiEllipseOut | — | 找到的椭圆区域,可直接作为下游 ROI 输入 |
两条绑定的区别
| 组件属性 | 绑定类型 | 绑定到 | 运行时的表现 |
|---|---|---|---|
| 标签.文本 | 输出参数绑定 | 图像源 → 输出参数「运行信息」 | 文本被运行期结果覆盖,设计时填的 Success 只是占位 |
| 图像处理.预览节点 | 节点级绑定(ToolNode) | 椭圆查找这个节点本身 | 组件同时显示输入预览、输出预览与缩略图 |
验证清单
- 「硬件配置」点「连接」出现「文件夹校验通过,已连接」,说明路径和图片格式没问题。
- 「运行一次」后两个节点依次进入执行态;标签文本不再是 Success,而是运行信息。
- 图像处理组件的输入预览与输出预览同时有画面,输出预览上能看到椭圆标记。
- 勾了「循环播放」时,画面按「播放间隔 (ms)」逐批切换;testimg/ 里的 circle_grid.png、geometric_shapes.png 适合拿来练椭圆查找。
常见排查
| 现象 | 先查这几处 |
|---|---|
| 画面空白 | 文件夹路径是否存在、扩展名是否在「扩展名过滤:」里、是否点了「应用」 |
| 标签一直显示 Success | 「输出参数」是不是选到了「运行信息」,以及是否还停在设计模式没运行 |
| 图像处理组件没有预览 | 「预览节点」要绑节点本身(椭圆查找),不是绑某个输出参数;三个显示开关是否都打开 |
| 找不到椭圆 | 边缘阈值 / 过滤面积是否过严,ROI 是否把目标框在外面 |
| 运行一次没反应 | 图像源节点的「源配置」是否指向已启用的源,硬件配置里的源是否 enabled |
注意
- 这份工程只有两个节点、两个组件,适合当模板:换掉中间的处理节点就是另一条流程,界面组件和绑定方式不用变。
- 改参数之前先跑一轮记住基线,一次只改一项,否则很难判断是哪一项让结果变了。
- 工程文件是 .vq,动手改之前先「另存为」一份,把随包示例留着当对照。
接下来
继续看专题:《做历史查询与报表页》。
