项目名称:装备状态多模-态视觉检测系统 (上位机平台开发)
项目简介
本项目旨在为多种先进的视觉检测算法提供一个通用、稳定且高性能的上位机平台。我独立负责该平台的设计与开发,它作为硬件控制中心和用户交互界面,无缝集成了偏振相机等多种硬件,并为外部Python算法模块提供了统一的调用、管理和结果展示框架。
我的职责:平台架构与全栈开发
作为该上位机平台的唯一开发者,我的核心职责包括:
- 系统架构设计:主导设计了 C++/Qt 前端 与 Python 算法后端 分离的解耦架构,明确了硬件控制、UI交互与算法分析的边界。
- 硬件集成与驱动开发:深度集成了大恒图像(IMV)的偏振相机SDK,实现了稳定、高效的硬件控制与数据流处理。
- 高性能实时图像处理:设计并实现了多线程图像处理管线,解决了高帧率下图像采集、渲染与UI响应的实时性与流畅性问题。
- 模块化UI界面开发:基于Qt框架,开发了包括主控台、相机控制面板、多任务模块界面在内的全部UI,提供了优秀的用户体验。
- 跨进程通信机制:设计并实现了C++主程序与外部Python算法进程之间的异步调用和数据交换机制。
核心技术实现
1. 高性能相机控制与实时显示
平台的核心是高性能的相机控制模块,它能保证在高帧率下稳定采集数据且不阻塞UI。
-
实现细节:
- 直接调用相机IMV SDK C++接口,实现相机连接、参数的动态读写(如曝光、增益)等底层控制。
- 关键设计:为解决UI卡顿问题,我设计了生产者-消费者模型的多线程架构:相机回调函数(生产者)在高频专用线程中将图像帧放入一个线程安全队列
TMessageQue
,而一个独立的渲染线程(消费者)从中取出数据进行显示,主UI线程完全不受影响。
-
-
图1:偏振相机实时控制 - 我开发的控制面板,可实时调节硬件参数,并通过独立渲染线程流畅显示视频流与多角度分析图。
2. 灵活的模块化与跨进程架构
平台被设计为一个开放式框架,可以方便地集成不同的检测功能模块。
-
实现细节:
- 主界面采用
QStackedWidget
管理各个功能模块,实现了清晰的UI导航逻辑。 - 关键设计:通过Qt的
QProcess
模块,C++主程序可以异步启动和管理外部的Python算法脚本。同时,利用QFileSystemWatcher
监控Python脚本输出的结果文件和日志,实现基于文件系统的单向数据通信,从而将算法的计算过程与主平台完全解耦。
- 主界面采用
-
-
图2:模块化主界面与检测模块 - 我设计的UI框架,用户在界面上操作(如点击“检测”),平台则在后台调用相应的Python脚本,并实时将算法返回的结果图像和数据显示在界面上。
** 其他模块展示 **
1.钢丝绳检测
2.多孔相机
3.高光谱相机
4.漏油检测
技术挑战与解决方案
-
挑战:高帧率(如30FPS+)相机数据流直接在UI线程处理会导致严重卡顿。
解决方案:如上所述,我设计了采集-缓冲-渲染分离的多线程架构,从根本上解决了实时数据显示的性能瓶頸。 -
挑战:如何让算法团队独立更新模型,而无需重新编译整个上位机软件?
解决方案:我设计的C++/Python解耦架构完美解决了此问题。算法的任何改动仅涉及Python脚本,上位机平台保持不变,极大地提升了开发和部署效率。 -
挑战:如何优雅地处理不同相机、不同算法模块的UI和调用逻辑?
解决方案:我采用了面向对象和模块化的设计思想,为每种功能都创建了独立的UI文件和处理逻辑类,使得代码结构清晰,易于维护和未来扩展。