Qt +C++ OpenCV+YOLO ONNX+PyTorch 整套技术栈分层掌握标准
按岗位需求分为三层:工程落地刚需层(必须精通)、模型转换辅助层(浅会即可)、算法训练进阶层(可选精通),适配机器视觉上位机、嵌入式视觉开发方向。
一、核心主力栈:Qt + C++ OpenCV(精通,求职核心竞争力)
1. C++ 基础门槛(前置)
- 必备:类、继承、多态、指针、智能指针、内存管理、STL 容器、多线程、互斥锁、回调
- 加分:模板、Lambda、CMake 编译、动态库 / 静态库编译、跨 Windows/Linux 编译
2. Qt 掌握要求(精通)
- UI 开发:QWidget 布局、信号槽、自定义控件、QPainter 绘制检测框 / 标注
- 多线程架构(视觉软件重中之重):
- QThread 分离 UI 线程与图像推理线程,防止界面卡顿
- 摄像头采集、YOLO 推理、图像显示三线程解耦
- 多媒体 / 视频:QCamera、RTSP 视频流读取、视频保存、定时器实时刷新画面
- 工具模块:QFile 读写、数据库存储检测结果、日志系统、参数配置面板
- 集成能力:Qt 嵌入 OpenCV Mat 图像显示,Mat 与 QImage 互转
3. C++ OpenCV 掌握要求(精通)
- 基础图像:Mat、像素操作、图像缩放、色域转换、ROI 截取、滤波、形态学操作
- 视频采集:本地视频、USB 相机、RTSP 监控流解码
- DNN 推理模块(YOLO 核心):
- ONNX 模型加载、CPU/CUDA 后端切换、图像归一化预处理
- YOLOv8/v5/v10 输出张量解析、坐标还原、置信度过滤、NMS 非极大抑制
- 可视化:绘制检测框、类别文字、掩码、保存截图 / 视频
- 进阶:相机标定、畸变校正、透视变换、轮廓检测、匹配识别
该层目标
独立开发完整工业视觉上位机,实时读取视频流 + YOLO 检测 + 界面展示 + 数据存储,无性能卡顿、内存泄漏。
二、辅助过渡栈:YOLO ONNX 模型转换(熟练,不用深挖算法)
定位:连接 PyTorch 训练权重与 C++ 推理的桥梁,只需要掌握转换流程
- ultralytics 导出规则:
- pt 权重导出 simplify 简化 ONNX、opset 版本适配 OpenCV
- 关闭内置 NMS 层,适配 DNN 后处理代码
- 模型校验:Net::empty () 排查导出失败、维度不匹配问题
- 版本兼容:区分 OpenCV4.5 + 高低版本 ONNX 适配差异
- 轻量化:模型量化、输入尺寸调整
该层目标
拿到任意训练好的 YOLO pt 文件,一键导出可在 C++ OpenCV DNN 正常推理的 ONNX,无解析报错。
三、工具层:PyTorch(分两种掌握标准,按需选择)
标准 A:仅部署上位机,不训练模型(浅会,最低成本)
只掌握环境搭建 + 模型导出,不用学习深度学习理论
- 环境搭建:Python、PyTorch、ultralytics 安装
- 基础脚本:加载预训练 YOLO、执行 export 导出 ONNX
- 基础调试:本地图片 / 视频快速跑一遍推理,验证模型精度再导出 不需要学:张量、数据集、损失函数、反向传播、网络结构修改、训练循环
标准 B:需要自定义训练 YOLO(系统掌握,进阶算法能力)
- PyTorch 核心基础:Tensor 张量运算、自动微分、Dataset 数据集、DataLoader
- YOLO 训练全流程:
- 标注数据集转换、yaml 配置文件编写
- 训练参数调优:批次、学习率、置信阈值、数据增强
- 模型评估:mAP、召回率、精度指标查看
- 模型微调:冻结骨干、自定义数据集迁移学习
- 进阶:修改 YOLO 骨干网络、增加注意力模块、多类别小目标优化
该层目标
- 标准 A:仅做转换工具人,不参与算法研发
- 标准 B:自主标注、训练专属检测模型,优化检测效果
整套技术栈学习优先级(推荐路线)
- C++ 基础 → Qt 界面开发 → C++ OpenCV 图像操作
- OpenCV DNN 加载现成 YOLO ONNX,实现 C++ 端推理 Demo
- 浅学 PyTorch 基础,学会 pt 转 ONNX,打通全流程
- 进阶可选:深度学习理论 + 完整 PyTorch 训练流程,自主训模型
- 性能优化:CUDA 加速、多线程、TensorRT 部署备选
岗位掌握程度区分
- 机器视觉上位机开发(主流岗位) 精通:Qt、C++、OpenCV DNN;熟练:ONNX 模型转换;浅会:PyTorch(仅导出)
- 视觉算法开发岗 精通:PyTorch 训练调参、YOLO 算法改进;熟练:ONNX 转换、OpenCV;了解 Qt 基础集成
- 嵌入式视觉开发 精通:C++ OpenCV、DNN 推理、多线程;了解 Qt;会 PyTorch 导出轻量化模型