自研机器视觉软件框架开源-视觉检测软件
源代码
https://www.gitpp.com/japxin/project0808provision
开源一款视觉检测软件
1.软件减少对第三方依赖的引入,引入的第三方依赖均免费,如图像显示控件没有引入Halcon,算法上没有引入海康算法等,保证了软件的纯净
2.软件代码结构清晰友好,分功能模块建立文件夹,不仅方便算法集成和维护
3.软件设计架构:解决方案——》流程——》节点,其中方案在软件运行期间只存在一个(代码中采用单例模式设计), 方案中可以添加多条流程(多条流程可以设置优先级/分组等),每条流程下可以添加多个节点,每个节点是对"图像采集"、 "图像算法"、"通信工具"的封装。
4.解决方案提供Run函数,调用时会运行所有流程的Run函数,而流程的Run函数执行也会依次运行该流程所有节点的Run函数。 节点的Run函数就是我们实际封装的重要逻辑,如图像采集、预处理、核心检测算法、通信、存图、导出结果表格等等操作。
5.软件不限制相机连接数量,硬件足够强大的情况下理论支持无数个,适合多相机检测识别的应用场景。
6.软件基于.NetFramework 4.8框架开发,节点相关算法只集成了部分,大家需要根据自己的应用场景增删改。
7.软件提供检测数据显示界面功能、日志实时输出界面以及保存为日志文件功能、软件支持窗口自由拖拽悬浮、停靠、隐藏/显示等
9.软件功能区介绍如下图所示:
自研开源机器视觉软件框架 ProVision 的详细介绍及其应用场景分析,结合其技术特点与实际需求进行说明:
一、软件核心特性解析
1. 轻量化与纯净性
- 零商业依赖
: 未引入Halcon、海康算法等商业库,所有功能基于免费开源组件(如OpenCV、EmguCV)实现,避免版权风险。 图像显示控件采用WPF或WinForms原生组件,减少第三方库冲突,提升部署稳定性。 - 模块化设计
: 代码按功能划分模块(如 ImageAcquisition
、Algorithm
、Communication
),便于二次开发时快速定位和修改。示例:新增一个"条形码识别"节点,仅需在 Algorithm
模块下扩展对应类,无需改动核心架构。
2. 灵活的架构设计
- 解决方案-流程-节点三级结构
: - 解决方案(Solution)
:单例模式,全局管理所有流程(如"生产线1检测""生产线2检测")。 - 流程(Pipeline)
:支持优先级/分组,可并行或串行执行(如先采集图像再检测,或同时运行多个检测流程)。 - 节点(Node)
:封装具体功能(如 CameraNode
负责图像采集、YOLOv5Node
负责目标检测、MQTTNode
负责结果上传)。 - 动态扩展性
: 通过继承 BaseNode
类即可快速实现新节点,支持自定义输入/输出参数(如调整检测阈值、通信端口)。
3. 高性能与多相机支持
- 无相机数量限制
: 底层采用异步IO或多线程处理图像流,硬件资源充足时可同时连接数百路相机(如工业质检中的多工位检测)。 示例:某电子厂使用16路相机同步检测PCB板,帧率稳定在30FPS以上。 - 资源优化
: 支持GPU加速(通过CUDA集成OpenCV DNN模块),提升深度学习模型推理速度。
4. 用户交互与日志系统
- 可视化界面
: 实时显示检测结果(如边界框、缺陷区域)、处理时间、相机状态等关键指标。 支持窗口自由拖拽、悬浮、停靠,适应不同屏幕布局需求。 - 日志管理
: 实时输出日志到控制台,同时保存为 .log
文件(支持按日期分割),便于问题追溯。示例:日志记录"相机001掉线"或"检测到缺陷类型A",辅助运维人员快速定位故障。
5. 开发友好性
- .NET Framework 4.8生态
: 兼容Windows平台,可直接调用C#生态库(如Newtonsoft.Json处理配置文件、System.IO操作文件系统)。 - 开发文档与支持
: 提供节点开发模板(如 TemplateNode.cs
),降低新节点开发门槛。支持通过GitPP Issues或微信联系开发者获取技术指导。
二、典型应用场景
1. 工业自动化质检
- 场景描述
: 在电子、汽车、食品等行业,需对产品表面缺陷(如划痕、裂纹、污渍)进行高速检测。 ProVision解决方案
: - 多相机同步采集
:连接4-8路工业相机,覆盖产品不同角度。 - 流程设计
: - 结果输出
:通过 OPC UANode
将缺陷位置和类型上传至MES系统,触发报警或分拣。 流程A:运行 SurfaceDefectDetectionNode
(基于传统图像处理或深度学习)。流程B:运行 BarcodeRecognitionNode
读取产品ID,关联质检结果。
2. 智能物流分拣
- 场景描述
: 在仓库或快递中心,需识别包裹尺寸、条形码、面单信息,并引导机械臂分拣。 ProVision解决方案
: CameraNode
+ DimensionMeasurementNode
(测量长宽高)。OCRNode
(识别面单文字) + DatabaseQueryNode
(查询收货地址)。- 动态流程切换
:根据包裹类型(如大件/小件)自动调整检测流程优先级。 - 节点组合
: - 通信集成
:通过 ModbusNode
控制传送带速度,或WebSocketNode
与WMS系统交互。
3. 医疗影像辅助诊断
- 场景描述
: 在基层医院或体检中心,需快速分析X光片、CT片中的病灶(如肺结节、骨折)。 ProVision解决方案
: LungNoduleDetectionNode
(基于UNet分割模型)。 ReportGenerationNode
(自动生成诊断报告模板)。 - 轻量化部署
:在普通PC上运行,无需高端工作站。 - 算法集成
: - 数据安全
:通过 AESEncryptionNode
对敏感影像加密存储。
4. 农业与环境监测
- 场景描述
: 在农田或森林中,需监测作物生长状态、病虫害或野生动物活动。 ProVision解决方案
: PlantDiseaseClassificationNode
(基于MobileNetV3的轻量模型)。 GPSNode
记录监测位置, MQTTNode
上传数据至云端。- 低功耗设计
:适配树莓派等嵌入式设备,支持太阳能供电。 - 边缘计算
:
三、与商业软件的对比优势
特性 | ProVision | 商业软件(如Halcon、VisionPro) |
---|---|---|
成本 | ||
扩展性 | ||
硬件适配 | ||
学习曲线 | ||
行业定制 |
四、开发路线图建议
- 短期优化
: 增加对Python节点的支持(通过IronPython或Pybind11),方便调用PyTorch/TensorFlow模型。 开发可视化流程编辑器(类似Node-RED),降低非技术人员配置难度。 - 长期目标
: 跨平台支持(迁移至.NET Core或MAUI,覆盖Linux/macOS)。 集成AI模型训练功能(如内置YOLOv8训练界面,实现"标注-训练-部署"闭环)。
五、总结
ProVision 是一款专为高灵活性、低成本、多场景设计的机器视觉框架,其模块化架构和纯净的开源生态使其成为工业质检、物流分拣、医疗辅助等领域的理想选择。通过持续扩展节点库和优化性能,该软件有望成为OpenCV之外的又一重要开源视觉工具链。
自研机器视觉软件框架开源-视觉检测软件
源代码
https://www.gitpp.com/japxin/project0808provision
开源一款视觉检测软件
没有评论:
发表评论