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程序,通过调试日志和保存的调试图像定位坐标映射错误的具体位置

注意:以上路径中的"用户名"为占位符,实际使用时请替换为系统中的真实用户名。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐