diff --git a/README.md b/README.md index eec9a61..46ad21d 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,61 @@ -# 黄色赛道检测与距离估算 +# 任务模块 -这个项目提供了一套用于检测黄色赛道并估算距离的工具。基于OpenCV的计算机视觉技术,能够从图像中识别黄色赛道,计算方向角度,并估算摄像机到赛道前方的距离。 +## top -## 功能特点 +1. “装货 / qrcode” +2. 曲线赛道 +3. 上下坡 + - 存在两种可能性 +4. 石板道 +5. 栅栏 / 栏杆 -- 黄色赛道检测与分割 -- 赛道方向和角度计算 -- 赛道距离估算 -- 结果可视化展示 -- 提供易于使用的测试工具 +## Task-1:出生点 - 取货 -## 安装依赖 +![alt text](./res/readme/image.png) -确保已安装以下依赖库: +从二维码取货完,然后走到弯道入口。 -```bash -pip install opencv-python numpy -``` +![alt text](./res/readme/image-1.png) -## 使用方法 +### 校准前方横线 & 距离距离 -### 基本用法 +RGB 摄像机所在位置的确定: +主要是需要确定其高度。 -```python -from utils.detect_track import detect_yellow_track, visualize_track_detection +## Task-2:弯道任务 +过去,以及回来。两个方向都需要。 -# 检测赛道并估算距离 -image_path = "path/to/your/image.jpg" -distance, path_info = detect_yellow_track(image_path) +![alt text](./res/readme/image-2.png) +![alt text](./res/readme/image-3.png) -if distance is not None: - print(f"估算距离: {distance:.2f}米") - print(f"赛道角度: {path_info['track_angle']:.2f}°") - print(f"转向方向: {path_info['turn_direction']}") +## Task-2.5:识别 +> 根据箭头决定方向。 -# 可视化检测过程 -visualize_track_detection(image_path, save_path="result.jpg") -``` +这里采取传统cv的基于凸包计算的算法。 -### 使用测试脚本 +## Task-3:上下坡 +同样需要考虑两个方向。(正式计时各有一半的概率) +> 感觉两个坡度稍微有一点点区别。 -项目提供了一个方便的测试脚本: +![alt text](./res/readme/image-4.png) +![alt text](./res/readme/image-5.png) -```bash -python test_track_detection.py --image path/to/your/image.jpg --observe --save result.jpg -``` +以及反方向。 -参数说明: -- `--image`: 要处理的图像路径(必需) -- `--save`: 结果图像保存路径(可选) -- `--observe`: 显示处理步骤的中间结果 -- `--delay`: 中间步骤显示的延迟时间,单位为毫秒(默认500ms) +## Task-4:石板路 -## 技术细节 +![alt text](./res/readme/image-6.png) +![alt text](./res/readme/image-7.png) -### 检测原理 +## Task-5:过栅栏 +![alt text](./res/readme/image-8.png) -1. 将图像转换为HSV颜色空间 -2. 使用颜色阈值提取黄色区域 -3. 寻找轮廓并合并相关区域 -4. 计算赛道的上部和下部中心点 -5. 基于中心点计算方向角度 -6. 根据黄色区域在图像中的占比估算距离 +## Task-5.5:走向卸货 +从上一个赛道结束到 B 二维码。 -### 距离估算 +## Task-6:卸货 +也可能在另一边。 +这里是感觉在走过去的过程中就能判断二维码。 -距离估算基于以下假设: -- 黄色赛道在图像中的占比与实际距离有反比关系 -- 占比越大,距离越近;占比越小,距离越远 - -注意:实际应用中,建议根据相机参数和实际测量进行标定,以获得更准确的结果。 - -### 函数说明 - -- `preprocess_image(image)`: 预处理图像,进行边缘检测 -- `detect_yellow_track(image, observe=False, delay=500)`: 检测黄色赛道并估算距离 -- `visualize_track_detection(image, save_path=None, observe=False, delay=500)`: 可视化检测过程 -- `estimate_distance_to_track(image)`: 估算到赛道的距离(简化版API) - -## 调整参数 - -如果检测效果不理想,可以尝试调整以下参数: - -1. HSV颜色范围(针对不同光照条件): -```python -lower_yellow = np.array([20, 100, 100]) # 调整黄色的下限 -upper_yellow = np.array([30, 255, 255]) # 调整黄色的上限 -``` - -2. 轮廓近似参数: -```python -epsilon = 0.01 * cv2.arcLength(all_contours, False) # 调整系数(0.01) -``` - -3. 距离估算系数: -```python -normalized_distance = min(10.0, max(0.0, estimated_distance / 100.0)) # 调整系数(100.0) -``` - -## 示例结果 - -处理后的图像将包含以下信息: -- 红色点:表示赛道的顶部和底部中心点 -- 绿色线:表示赛道的中心线 -- 文本信息:距离、角度和方向 - -## 注意事项 - -- 该方法在光照条件稳定的环境中效果最佳 -- 黄色赛道需要与背景有足够的对比度 -- 摄像机应保持相对稳定的高度和角度 -- 实际应用中需要根据具体场景调整参数 \ No newline at end of file +![alt text](./res/readme/image-9.png) +![alt text](./res/readme/image-10.png) \ No newline at end of file