减速带检测和测距系统实现
一、编译环境配置
1. 创建编译环境
使用Anaconda创建用于运行YOLOv8训练模型的虚拟环境:
conda create-nyolov8python=3.8conda activate yolov8在激活的yolov8环境中,跳转到项目文件夹并安装依赖:
pipinstallultralytics# 其他依赖如opencv等按需添加2. PyCharm环境配置
在PyCharm中配置Conda虚拟环境:
- 【设置】-【项目】-【Python解释器】-【添加】
- 选择【Conda环境】-【现有环境】
- 指定解释器路径:
(anaconda安装路径)\envs\yolov8\python.exe - 指定Conda可执行文件:
(anaconda安装路径)\Scripts\conda.exe
二、系统准备工作
1. 相机标定
- 设备需求:鱼眼相机、标准棋盘格
- 标定过程:计算相机内参矩阵和畸变系数,用于后续图像去畸变处理
2. 单应矩阵标定
- 设备需求:鱼眼相机、移动小车、地面关键点(如瓷砖)
- 处理流程:
- 对鱼眼图像进行去畸变处理
- 建立地面坐标系与图像坐标系的映射关系
- 计算透视变换矩阵H
3. 减速带检测模型训练
- 工具:YOLOv8框架
- 数据:使用提供的专业减速带数据集
- 输出:生成
speedbump.pt模型文件
三、项目目录结构说明
1. 视频数据目录
captured_video/:原始拍摄视频captured_undistorted_video/:去畸变后的视频captured_detected_video/:含减速带识别和测距结果的视频
2. 标定数据目录
calibration_images/:相机标定用棋盘格图片calibration_corners_images/:棋盘格角点检测结果marked_points_image/:测距用地面瓷砖标记图片
3. 处理中间结果
undistorted_frames/:视频分帧去畸变结果marked_frames/:标注了减速带和距离的帧generated_video/:最终输出视频
4. 配置文件与工具
configs/:存储系统配置H_matrix.npy:透视变换矩阵camera_intrinsic.py:相机内参和畸变系数
utils/:工具函数集capture.py:图像采集file_operations.py:文件操作generate_video.py:视频生成split_video_and_undistort.py:视频分帧去畸变calibration.py:相机标定相关
5. 核心功能模块
capture_video.py:视频采集(含实时去畸变)detect.py:离线视频处理(检测+测距)capture_detect.py:实时检测与测距homography.py:单应矩阵计算speedbump.pt:训练好的YOLOv8模型
四、核心功能实现
1. 图像去畸变处理
- 基于相机标定参数
- 使用OpenCV的
undistort函数 - 处理效果对比存储在
undistorted_frames/
2. 减速带检测
- 加载预训练YOLOv8模型(
speedbump.pt) - 实现多尺度检测
- 检测结果可视化标注
3. 减速带距离计算
- 基于单应矩阵H实现图像坐标到地面坐标的转换
- 计算减速带中心点到相机的实际距离
- 距离信息实时显示在视频画面中
五、系统使用流程
- 完成相机标定和单应矩阵计算
- 训练或获取减速带检测模型
- 选择运行模式:
- 离线处理:
python detect.py - 实时检测:
python capture_detect.py
- 离线处理:
- 结果视频保存在
generated_video/目录
该系统实现了从图像采集、预处理到目标检测、距离测量的完整流程,为智能交通和车辆辅助驾驶提供了实用的技术解决方案。