文章目录前言一、平台核心架构设计1.硬件层统一硬件接入底座2.核心驱动层硬件与上层的桥梁3.算法插件层平台的核心能力载体4. 流程引擎层可视化流程设计与执行5.交互展示层用户友好的操作界面二、开发环境三、部分界面总结前言以“低代码、插件化、高扩展”为核心设计理念实现“硬件适配-流程设计-算法部署”的一站式解决方案。在智能制造、机器视觉检测等领域视觉算法的灵活部署、快速迭代与跨设备适配一直是行业痛点。本文基于QtOpenCV实现通用算法视觉平台以“低代码、插件化、高扩展”为核心设计理念底层打通相机与PLC硬件层上层构建可视化拖拉式流程设计界面算法以插件形式即插即用覆盖图像处理、检测识别、标定、几何分析、三维检测等全场景视觉应用实现“硬件适配-流程设计-算法部署”的一站式解决方案。一、平台核心架构设计平台采用分层解耦插件化模块化的架构设计整体分为五层各层职责清晰既保证底层稳定性又兼顾上层灵活性。架构整体框图如下1.硬件层统一硬件接入底座作为平台的基础层支持主流工业相机海康威视、大恒、Basler等、主流PLC品牌西门子、三菱、欧姆龙、松下等及通用IO传感器接入核心目标是“屏蔽硬件差异提供标准化接入接口”。相机接入支持GigE Vision、USB3 Vision、Camera Link等工业协议通过OpenCV相机厂商SDK封装统一的图像采集接口支持实时流获取、参数曝光、增益调节、图像缓存。PLC通信基于Qt的QSerialPort、QTcpSocket/UdpSocket封装主流协议Modbus RTU/TCP、Profinet、EtherNet/IP提供标准化的“读/写寄存器”接口支持通信状态监控、异常重连实现视觉结果与PLC的实时交互如检测OK/NG信号下发、PLC触发视觉采集。2.核心驱动层硬件与上层的桥梁核心驱动层是平台的“承上启下”层基于Qt的信号槽机制与OpenCV的图像处理基础封装硬件层的核心能力向上暴露标准化API向下处理硬件底层细节相机驱动模块封装相机的“连接/断开、参数配置、图像采集、帧率控制”等功能将采集到的图像转换为OpenCV的Mat格式通过Qt信号实时推送至上层。PLC通信模块封装PLC的“连接/断开、寄存器读写、协议解析”支持批量读写、超时重传将PLC数据转换为平台统一的数值类型与上层流程引擎联动如PLC触发信号触发算法流程执行。数据采集/转发模块负责图像、PLC数据、算法结果的缓存与转发支持数据持久化保存为图片、日志文件满足追溯需求。硬件状态监控实时检测相机、PLC的连接状态异常时触发告警界面提示、日志记录保证平台稳定性。3.算法插件层平台的核心能力载体算法插件层是平台的核心竞争力采用插件化架构基于Qt的QPluginLoader实现所有算法以独立插件形式存在支持“热插拔、按需加载、自定义开发”无需修改平台主程序即可扩展新算法。插件设计遵循统一接口规范每个插件需实现“参数配置、算法执行、结果返回”三大核心接口平台提供插件开发模板开发时只需聚焦算法逻辑无需关注平台集成细节。// 算法插件统一接口基类classAlgorithmPluginInterface{public:virtual~AlgorithmPluginInterface()default;// 获取插件名称/类别virtualQStringpluginName()const0;virtualQStringpluginType()const0;// 获取参数配置界面供上层加载virtualQWidget*paramWidget()0;// 执行算法输入图像/参数输出结果virtualAlgorithmResultrun(constcv::Matimage,constQVariantMapparams)0;};// 模板匹配插件实现示例classTemplateMatchPlugin:publicQObject,publicAlgorithmPluginInterface{Q_OBJECTQ_PLUGIN_METADATA(IIDcom.vision.platform.AlgorithmPluginInterfaceFILEtemplateMatch.json)Q_INTERFACES(AlgorithmPluginInterface)public:QStringpluginName()constoverride{return模板匹配;}QStringpluginType()constoverride{return检测识别;}QWidget*paramWidget()override{returnnewTemplateMatchParamWidget();}AlgorithmResultrun(constcv::Matimage,constQVariantMapparams)override{// 1. 从params中获取模板图像、匹配阈值等参数// 2. 执行OpenCV模板匹配算法// 3. 封装匹配结果位置、得分、是否匹配成功并返回}};4. 流程引擎层可视化流程设计与执行流程引擎层是平台的“大脑”核心是拖拉式流程设计器基于Qt的Graphics View框架实现让用户无需写代码通过拖拽算法插件、连接插件节点即可完成视觉检测流程的设计拖拉式流程编辑器以“节点算法插件 连线数据流向”的形式可视化展示流程支持节点的添加/删除/移动、连线的自动布局、流程缩放/保存每个节点关联对应算法插件的参数配置界面用户可直接在界面上调整算法参数。流程解析/执行引擎将可视化流程转换为可执行的指令序列按照节点顺序调用算法插件的run接口实现数据的自动流转如前一个节点的图像处理结果作为下一个节点的输入支持单步执行、断点调试方便流程调试。流程保存/加载将流程配置节点类型、参数、连线关系保存为JSON格式文件支持一键加载、流程版本管理满足不同产线/检测场景的快速切换。// 流程引擎核心类classFlowEngine:publicQObject{Q_OBJECTpublic:explicitFlowEngine(QObject*parentnullptr);// 从JSON文件加载流程配置boolloadFlowFromJson(constQStringjsonPath);// 执行流程boolexecuteFlow(FlowContextcontext);private:// 解析JSON为流程节点映射表boolparseFlowJson(constQJsonObjectrootObj);// 执行单个节点boolexecuteNode(constQStringnodeId,FlowContextcontext);// 调用算法插件执行具体逻辑boolcallAlgorithmPlugin(constFlowNodenode,FlowContextcontext);private:QMapQString,FlowNodem_nodeMap;// 节点ID - 节点信息映射QString m_startNodeId;// 起始节点IDQMapQString,QObject*m_pluginMap;// 已加载的算法插件实例插件名-实例};5.交互展示层用户友好的操作界面基于Qt的QWidget/QML打造交互界面兼顾专业性与易用性核心模块包括可视化界面分为“硬件配置区、流程设计区、结果展示区”三大区域实时显示相机画面、流程执行状态、算法结果如测量值、检测框、OK/NG标识。参数配置面板集成所有算法插件的参数配置界面支持参数实时调整、参数预设保存常用参数组合、参数导入/导出。结果展示/日志模块以图表、数值、图像叠加等形式展示检测结果自动记录流程执行日志、异常日志支持日志查询、导出。权限管理模块区分管理员、操作员、开发人员等角色控制流程修改、插件管理、参数调整等权限满足工厂分级管理需求。二、开发环境-QT5.15.2-opencv:4.6.0-qt vs tools:3.4.1-vs:2019三、部分界面检测流程及结果显示相机设置总结本文介绍了通用视觉算法平台的相关架构通过“分层解耦插件化可视化”的架构设计打破了传统视觉系统“硬件绑定、算法固化、交互复杂”的瓶颈实现了视觉算法的低代码部署与灵活扩展。有需要完整软件的可关注下面公众号进行获取。同时记得收藏后期会介绍更多计算机视觉在显示面板缺陷检测中的应用案例。