跳到主要内容

卡片图编辑器

卡片图 (Card Graph) 是 Vision Studio 的拖拽式视觉流程编辑器,通过组合不同类型的卡片构建从图像采集到结果输出的完整处理管道。卡片图编辑器无需编写代码,适合快速搭建标准视觉流程。

编辑器界面

卡片图编辑器由以下几个区域组成:

┌──────────────────────────────────────────────────────────┐
│ 工具箱 (Toolbox) │ 编辑区 (Canvas) │
│ ┌────────────────┐ │ ┌────────────────────────────┐ │
│ │ 采集 │ │ │ │ │
│ │ ├ 相机采集 │ │ │ [相机采集]───[预处理] │ │
│ │ ├ 图像加载 │ │ │ │ │ │ │
│ │ │ │ │ │ ▼ ▼ │ │
│ │ 预处理 │ │ │ [目标检测]───[结果输出] │ │
│ │ ├ 滤波 │ │ │ │ │
│ │ ├ 尺寸调整 │ │ │ │ │
│ │ ├ 色彩转换 │ │ └────────────────────────────┘ │
│ │ │ │ │ │
│ │ 检测 │ │ ┌────────────────────────────┐ │
│ │ ├ 目标检测 │ │ │ 属性面板 (Properties) │ │
│ │ ├ 模板匹配 │ │ │ ┌──────────────────────┐ │ │
│ │ │ │ │ │ │ 卡片: 目标检测 │ │
│ │ 测量 │ │ │ │ 模型: model.onnx │ │
│ │ ├ 边缘检测 │ │ │ │ 阈值: 0.5 │ │
│ │ ├ 圆/线测量 │ │ │ └──────────────────────┘ │ │
│ │ │ │ │ └────────────────────────────┘ │
│ │ 识别 │ │ │
│ │ ├ 条码识别 │ │ [状态栏: 就绪 | 3 个卡片] │
│ │ ├ QR 码识别 │ │ │
│ │ └──────────────┘ │ │
└──────────────────────────────────────────────────────────┘
区域说明
工具箱左侧面板,列出所有可用卡片,按功能分组
编辑区中央画布,拖拽卡片并连接构成视觉流程
属性面板右侧面板,显示当前选中卡片的详细参数
状态栏底部状态信息,显示卡片数量、运行状态等

卡片类型

Vision Studio 的卡片按功能分为六大类:

采集类

卡片说明输出
相机采集从相机采集一帧图像Image
图像加载从文件加载图像Image
视频流连续采集视频流Image (多帧)
图像队列从缓存队列取图像Image

预处理类

卡片说明输出
滤波高斯滤波、中值滤波、双边滤波Image
尺寸调整缩放图像至指定尺寸Image
色彩转换灰度、HSV、RGB 通道转换Image
ROI 提取提取感兴趣区域Image
直方图均衡增强对比度Image
形态学腐蚀、膨胀、开闭运算Image
图像增强亮度、对比度、锐化调整Image

检测类

卡片说明输出
目标检测ONNX 模型目标检测DetectionResult
模板匹配基于形状或灰度的模板匹配MatchResult
边缘检测Canny、Sobel 边缘检测Image
异常检测基于模型的异常检测AnomalyResult

测量类

卡片说明输出
圆/弧测量拟合圆、圆弧,输出半径圆心Measurement
直线测量拟合直线,输出角度、距离Measurement
点间距测量两点间距离Measurement
角度测量测量两线夹角Measurement
轮廓测量轮廓拟合与参数提取Measurement

识别类

卡片说明输出
条码识别一维条码读取DecodeResult
QR 码识别二维码读取DecodeResult
DataMatrixDM 码读取DecodeResult
OCR 文字识别字符识别OCRResult
分类器图像分类ClassificationResult

输出类

卡片说明输出
结果输出结果写入 PLC 变量
数据通信通过 HSL/OPC UA 发送
图像保存保存图像到文件
结果显示在 IDE 显示实时结果
日志记录结果写入诊断日志

卡片连接与数据流

连接规则

卡片之间的连接线表示数据流,遵循以下规则:

  1. 单向连接:数据从上游卡片流向下游卡片
  2. 一进多出:一个输出可连接到多个下游输入
  3. 类型匹配:输出类型必须与输入类型兼容
  4. 分支合并:不支持多输入合并到同一输入端口(需使用 Vision SCL 实现)

数据流类型

类型说明传递内容
Image图像数据像素矩阵 + 元数据
DetectionResult检测结果边界框 + 类别 + 置信度
Measurement测量结果几何参数 + 状态
DecodeResult解码结果字符串内容 + 码类型
OCRResult识别结果文字 + 置信度 + 位置
MatchResult匹配结果匹配位置 + 评分
ClassificationResult分类结果类别 + 概率分布
AnomalyResult异常检测结果异常分数 + 热力图
String通用字符串文本
Numeric数值整数或浮点数

数据流示例

[相机采集] ──Image──→ [滤波] ──Image──→ [目标检测] ──DetectionResult──→ [结果输出]

├──→ [结果保存]

└──→ [图像保存]

参数配置

卡片属性编辑

双击卡片或选中卡片后在属性面板中配置参数:

参数类型

控件类型说明示例
数值输入设置数值参数阈值 0.5
下拉选择从预定义列表选择滤波类型: 高斯
文件选择浏览文件路径模型文件: model.onnx
颜色选择选择颜色标注颜色: 绿色
变量绑定绑定 PLC 变量输出变量: VIS_RESULT
表达式输入简单表达式ROI: (x:100, y:100, w:400, h:400)

参数验证

配置参数时编辑器实时验证:

  • 数值范围检查(如置信度必须在 0~1)
  • 文件存在性检查(模型文件路径)
  • 类型兼容性检查(连接线类型匹配)
  • 必填项检查(标记为红色的参数必须填写)

高级功能

条件分支

通过条件判断卡片实现分支逻辑:

[目标检测] ──── 有目标 ────→ [测量] ──→ [结果输出]

└─── 无目标 ────→ [默认结果输出]

循环处理

通过图像队列和循环计数器实现多帧处理:

[图像队列] ──→ [目标检测] ──→ [结果累加]
↑ │
└──────────────────────────┘
(循环 10 次后输出)

子图 (Subgraph)

将多个卡片打包为子图,实现流程复用:

  1. 选中多个卡片 → 右键 → 创建子图
  2. 为子图命名并定义输入输出端口
  3. 在工具箱的 子图 分组中可重复使用

校验与编译

卡片图编辑完成后,需要进行校验:

  • 语法校验:检查连接完整性、类型匹配
  • 资源检查:确认相机、模型文件等资源可用
  • 编译生成:将卡片图编译为内部中间表示,供运行时执行

校验通过后,视觉程序即可部署运行。校验错误会显示在 输出面板 中,双击错误可定位到对应卡片。