2. MERLIC开发环境与工程结构

MERLIC 的工程化能力,首先体现在它的开发环境组织方式上。与传统的通用视觉软件不同,MERLIC 把“工具”作为流程的基本单元,把“图像”作为数据载体,把“变量”作为工具之间传递信息的通道。理解这套环境,是后续搭建可维护、可复用视觉流程的前提。本节从界面布局入手,逐层拆解工具箱、流程编辑器、图像窗口、变量与结果面板,再落到工程目录与文件类型,帮助读者建立“界面—流程—文件”三层对应的整体认知。

一、主界面布局:五个功能区各司其职

MERLIC Creator 启动后,主界面大致分为五个区域。左侧是工具箱(Toolbox),按类别列出所有可用工具,例如图像采集、预处理、定位、测量、检测、标定等。中间上方是流程编辑器(Recipe Editor),以图形化方式展示工具之间的连接关系。中间下方或右侧是图像窗口(Image Window),用于显示当前工具处理前后的图像、ROI 和结果叠加。右侧是变量与结果面板(Variables & Results),列出当前流程中所有工具的输入输出变量及其数值。顶部是菜单与工具栏,包含新建、保存、运行、单步执行、停止等控制按钮。

这五个区域不是孤立的:工具箱决定“能做什么”,流程编辑器决定“怎么连”,图像窗口决定“看到什么”,变量与结果面板决定“数据是什么”,工具栏决定“何时执行”。理解它们之间的联动关系,比记住每个按钮的位置更重要。

MERLIC Creator 主界面布局与数据联动 菜单与工具栏 新建 保存 运行 单步 停止 工具箱 Toolbox 图像采集 图像预处理 定位与对齐 测量 检测与判定 标定 通信与输出 拖拽工具到流程编辑器 流程编辑器 Recipe Editor 采集图像 AcquireImage 定位 Locate 测量 Measure 结果判定 Check 图像窗口 Image Window 原始图像 结果叠加 变量与结果面板 变量名 值 Image 640×480 PositionX 312.5 PositionY 208.7 Angle 1.24° Width 48.02 Result OK Score 0.96 工具输出自动注册为变量 可被下游工具引用

二、工具箱:工具的分类与选择逻辑

MERLIC 的工具箱按功能域分类,常见类别包括:图像采集(AcquireImage、LoadImage)、预处理(Filter、Morphology)、定位(Locate、Align)、测量(Measure、Calibrate)、检测(Check、Blob)、通信(TCP/IP、PLC)等。每个工具在流程编辑器中表现为一个节点,节点上带有输入端口和输出端口。输入端口接收图像或变量,输出端口产生结果变量。

选择工具时,应遵循“先定位、后测量、再判定”的常规顺序。例如,若要对工件上的孔位进行直径测量,先使用 Locate 工具找到工件基准,再用 Measure 工具在基准坐标系下测量孔径,最后用 Check 工具判断直径是否在公差范围内。工具之间的连接不是随意的,而是由数据依赖关系决定:下游工具的输入必须来自上游工具的输出或已定义的常量。

三、流程编辑器:图形化连接与执行顺序

流程编辑器是 MERLIC 的核心工作区。每个工具节点包含工具名称、工具类型和参数摘要。节点之间的连线表示数据流方向,箭头从输出端口指向输入端口。MERLIC 按照数据依赖关系自动确定执行顺序,而不是简单按从左到右排列。如果两个工具之间没有数据依赖,它们的执行顺序可能并行或按内部调度决定。

在流程编辑器中,可以右键节点进行重命名、禁用、删除或查看参数。禁用节点(Disable)是一个实用功能:在调试阶段,可以临时关闭某个工具,观察其对下游结果的影响,而不必删除节点和重新连线。单步执行(Step)则允许逐个工具运行,配合图像窗口和变量面板,可以精确定位问题出现在哪个环节。

四、图像窗口与变量结果面板:观察与验证

图像窗口显示当前选中工具的输出图像。如果选中采集工具,显示原始图像;如果选中测量工具,显示带有测量线、拟合结果和数值标注的图像。图像窗口支持缩放、平移和 ROI 编辑。ROI(感兴趣区域)是许多工具的必要输入,可以在图像窗口中以矩形、圆形、环形或多边形方式绘制。

变量与结果面板列出当前流程中所有变量的名称、类型和当前值。工具的输出变量会自动注册到面板中,例如 Locate 工具输出 PositionX、PositionY、Angle,Measure 工具输出 Width、Diameter 等。这些变量可以被下游工具引用,也可以绑定到通信接口输出给外部系统。面板中的值在每次运行后刷新,是判断流程是否按预期工作的直接依据。

调试建议:先单步运行到定位工具,确认 PositionX/PositionY 与图像窗口中的十字标记一致;再运行测量工具,检查 Width 或 Diameter 是否落在合理范围;最后运行判定工具,观察 Result 变量是否为 OK。若某一步变量值异常,优先检查该工具的 ROI 和参数,而不是急于修改下游工具。

五、MERLIC 工程的目录组织与文件类型

一个 MERLIC 工程在磁盘上是一个文件夹,内部包含若干子目录和文件。典型结构如下:

MyProject/
├── MyProject.mvproject      # 工程主文件,记录流程、变量和界面配置
├── Images/                  # 采集或导入的图像文件
│   ├── sample_001.png
│   └── sample_002.png
├── Calibration/             # 标定数据
│   └── camera_calib.mvcalib
├── Tools/                   # 自定义工具或工具配置
│   └── custom_tool.mvtool
├── Results/                 # 运行结果输出
│   └── result_log.csv
└── Config/                  # 通信与运行配置
    └── communication.json

其中,.mvproject 是工程主文件,保存流程结构、工具参数、变量定义和界面布局。它不直接存储图像数据,而是引用 Images 目录中的文件或相机采集配置。.mvcalib 是标定文件,保存相机内参、畸变系数或手眼标定矩阵。.mvtool 是自定义工具文件,用于封装可复用的工具组合。Results 目录通常由流程运行时写入,保存检测结果、日志或统计信息。Config 目录保存通信协议、PLC 地址映射或运行参数。

理解目录组织的意义在于:工程迁移时,不能只复制 .mvproject 文件,还需要一并复制 Images、Calibration 和 Config 等依赖目录,否则流程可能因找不到图像或标定数据而报错。在团队协作中,建议将工程目录纳入版本管理,但图像和结果文件可根据需要排除或使用样本数据替代。

六、从界面到文件的对应关系

把界面操作与文件变化对应起来,有助于建立完整的工程认知:在流程编辑器中添加工具并连线,保存后写入 .mvproject;在图像窗口中绘制 ROI 并调整参数,同样写入 .mvproject;运行流程产生的结果,根据配置写入 Results 目录或通过通信接口发送;标定操作生成 .mvcalib 文件,被测量工具引用。界面是操作入口,文件是持久化结果,变量是两者之间的数据纽带。