Qt5 + YOLOv5 集成项目总结
·
Qt5 + YOLOv5 集成项目总结
一、已完成的工作
1. YOLOv5推理模块集成
创建了RKNN推理封装,实现模型加载、图像预处理、推理和后处理:
| 文件 | 作用 |
|---|---|
| [detectorrknn.h](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Detect/YOLO/detectorrknn.h) | 声明 DetectorRKNN 类 |
| [detectorrknn.cpp](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Detect/YOLO/detectorrknn.cpp) | 推理逻辑:letterbox预处理 → RKNN推理 → NMS后处理 |
| [rknn_postprocess.cc](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Detect/YOLO/rknn_postprocess.cc) | 后处理:NMS、坐标解码 |
| [rknn_postprocess.h](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Detect/YOLO/rknn_postprocess.h) | 后处理结构体和函数声明 |
2. 数据流集成
修改3个关键文件,打通数据流:
G400Camera采集 → imageDetectQueue → DetectorRKNN推理 → g_param->yolo_res → QImageDisplayLabel绘制
- [g400camera.cpp](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Camera/g400camera.cpp):采集帧送入检测队列
- [qtracker.cpp](file:///home/用户名/hdd3/main/QTracker_booster_G4040/UI/qtracker.cpp):创建并启动检测器线程
- [QImageDisplayLabel.cpp](file:///home/用户名/hdd3/main/QTracker_booster_G4040/UI/QImageDisplayLabel.cpp):绘制检测框和标签
3. 项目配置
[QTracker_booster.pro](file:///home/用户名/hdd3/main/QTracker_booster_G4040/QTracker_booster.pro) 添加了RKNN源文件、头文件路径和库链接。
二、遇到的问题与解决方法
问题1:VNC远程界面花屏
- 现象:VNC连接后界面显示异常,Qt程序无法显示
- 根因:
DISPLAY环境变量为空,终端未指向VNC的X服务器 - 解决:
export DISPLAY=:1
问题2:YOLOv5只在3tap模式下有标注
- 现象:3tap模式检测正常,1tap/2tap模式下无检测框
- 根因:
bufToRGB()中1tap/2tap生成灰度图(CV_8UC1),而YOLOv5需要RGB输入 - 解决:在 [g400camera.cpp](file:///home/用户名/hdd3/main/QTracker_booster_G4040/Camera/g400camera.cpp#L228-L243) 中,非3tap模式下先用
cvtColor(GRAY2RGB)转换再送检测
问题3:检测框显示为全屏大框
- 现象:画面中有两个人,但显示一个全屏大框而非两个小框
- 排查:通过独立测试程序
test_yolov5验证模型本身正常(bus.jpg正确检测4个目标,坐标合理),问题出在Qt程序内的坐标映射链路 - 当前状态:已添加调试日志和调试图像保存功能,等待相机环境复测
问题4:没有相机时无法测试
- 现象:没有相机硬件,无法运行完整Qt程序
- 解决:创建了独立测试程序
test_yolov5,用图片直接测试RKNN推理
三、测试工具
独立测试程序:test_yolov5
不需要相机,直接用图片验证YOLOv5模型是否正常:
cd /home/用户名/hdd3/main/QTracker_booster_G4040
./test_yolov5 <模型路径> <图片路径>
示例:
./test_yolov5 \
/home/用户名/rknpu2-master/examples/rknn_yolov5_demo/install/rknn_yolov5_demo_Linux/model/RK3588/yolov5s-640-640.rknn \
/home/用户名/rknpu2-master/examples/rknn_yolov5_demo/model/bus.jpg
最近测试结果(bus.jpg):
| 目标 | 置信度 | 检测框 |
|---|---|---|
| person | 88.4% | (209,244)→(286,506) |
| person | 86.8% | (478,238)→(559,526) |
| person | 82.5% | (110,238)→(230,534) |
| bus | 70.5% | (94,129)→(553,468) |
结果保存到 [test_result.jpg](file:///home/用户名/hdd3/main/QTracker_booster_G4040/test_result.jpg)。
Qt程序内调试功能
- 每10帧打印检测信息(目标数、阈值、坐标)
- 每50帧保存调试图像(
debug_detect_50.jpg等)
四、待办事项
- 检测框全屏问题:需要连接相机后运行Qt程序,通过调试日志和保存的调试图像定位坐标映射错误的具体位置
注意:以上路径中的"用户名"为占位符,实际使用时请替换为系统中的真实用户名。
更多推荐




所有评论(0)