工具与算子库:总览
算子(Tool)是组成程序的最小执行单元。ToolBank 的算子来自内置插件(随安装包分发,也可在插件管理器中停用)与第三方插件。所有算子遵循同一套“输入 → 处理 → 输出”模型,输入可绑定变量或常量,输出写入变量池,供后续算子引用。
算子从哪来
| 插件 | 内容 | 类别 |
|---|---|---|
| 基础工具(ToolBase) | 变量定义、数学、文件 IO、控制流 | Math / Variable / FileIO / ControlFlow |
| Plugin.CV | 图像处理算子 | Image / Region / Transformation |
| Plugin.DL | 深度学习与 OCR | CustomTools |
| Plugin.Camera | 相机采集 | CustomTools |
| Plugin.Calibration | 相机标定 / 去畸变 | CustomTools |
| Plugin.Finance | CSV 读取、净值收益计算 | CustomTools |
| Plugin.DevOps | 编译与工程工具 | CustomTools |
在程序编辑器里添加算子时,“工具选择器”按分类组织,支持关键字搜索。下表是全部内置分类:
| 分类 | 典型内容 |
|---|---|
| Image | 滤波、阈值、边缘、形态学、算术、几何变换、直方图、模板匹配(见 图像与几何算子) |
| Region | 区域生成 / 组合,与图像分析配合(Region 本质是 0/255 像素掩码) |
| Transformation | 平移 / 旋转 / 缩放等空间变换 |
| Math | 四则、取整、幂、比较、统计、表达式求值 |
| Variable | 定义各类型变量(见下) |
| FileIO | 读写图像、创建目录、路径判断等 |
| ControlFlow | IF / ELIF / ELSE / LOOP / BREAK / CALL / 条件表达式(Evaluate Condition) |
| CustomTools | 深度学习、OCR、相机、标定、金融、DevOps 等扩展工具 |
变量:算子之间的“数据交换格式”
所有算子输入输出的数据都落在变量池里。理解变量类型,是理解算子功能的关键。
标量
| 类型 | 含义 |
|---|---|
| INTEGER | 整数 |
| DOUBLE | 浮点数 |
| STRING | 字符串(路径、名称、文本) |
| BOOL | 布尔(多数算子中以 0/1 整数表达) |
图像与区域
| 类型 | 含义 |
|---|---|
| IMAGE | 图像,支持 8U / 16U / 32F 等常见位深与多通道 |
| REGION | 区域掩码,像素值 0/255,与图像同尺寸——用于限定“处理哪一块” |
几何图形(Shape)
| 类型 | 含义 | 典型来自 |
|---|---|---|
| POINT2D / POINT3D | 点 | 特征点定位、相机结果 |
| LINE2D | 直线(亚像素级) | 边缘拟合 |
| RECTANGLE2D | 矩形(可带角度) | 目标框 |
| CIRCLE2D | 圆 | 圆环定位 |
| ELLIPSE2D | 椭圆 | 缺陷 / 焊点 |
| POLYGON2D | 多边形 | 不规则 ROI、轮廓 |
注意 ToolBank 的语义分层:REGION 是像素掩码(决定图像上哪里参与运算),RECTANGLE2D / CIRCLE2D 等几何类型是可以被公式、测量算子直接消费的“图形数据”。需要“在图像上画出结果”时,用叠加注记 / 用户视图来呈现。
数组(列表)
所有类型都有数组形式,命名加 v 前缀:vDOUBLE、vIMAGE、vPOINT2D、vRECTANGLE2D、vPOLYGON2D 等。数组变量允许不同长度,且多数算子支持“一个数组输入批量处理”,例如一次检测一张大图切出的多个子区域。
自定义插件可声明更多类型,并在 插件 API 中注册。当前 22 种内置类型(11 种单值 + 对应
v数组)以程序编辑器中“变量类型”下拉的实际选项为准。
端口模式:输入能不能留空、能不能接数组
每个输入端口声明三种模式之一,决定了你绑定参数时的自由度:
| 模式 | 含义 |
|---|---|
| 仅单值 | 必须绑定一个值 |
| 单值或列表 | 可绑一个值,也可绑一个数组(算子内部对每个元素处理) |
| 可空 | 不绑定也能运行(常用于可选 ROI、可选阈值) |
把鼠标悬停在算子输入框上,会看到该端口的模式提示与用途说明。
文件格式约定
| 后缀 | 内容 |
|---|---|
.tbcode | 程序文件(Job / 算子 / 参数 / 连接) |
.tblayout | 用户视图布局(控件位置、大小) |
.tbjob | 插件分发的示例 / 例程文件 |
variables.json + blobs/ | 工作空间序列化的变量值与图像二进制 |
程序 / 布局 / 变量是三个独立文件,菜单里的“导入程序 / 导出程序 / 导入布局 / 导出布局”分别操作它们。
系统变量:$(SolutionDir) 等路径宏
部分需要文件路径的参数支持系统变量宏,运行时展开为完整路径,便于工程整体迁移(换个目录不用改每个算子里的路径):
| 宏 | 展开为 |
|---|---|
$(SolutionDir) | 当前工作空间的根目录(含尾斜杠) |
在需要路径的输入框里直接写 $(SolutionDir)images\src.png 即可。系统变量在调用内核前展开、不写入程序文件,属于“会话级动态值”;自定义的普通变量不受影响。