更新README.md,重构任务模块结构,添加多个任务说明,包括取货、弯道、上下坡、石板路和过栅栏,补充相关图示和算法描述,简化内容以提高可读性。
This commit is contained in:
		
							parent
							
								
									04613d685d
								
							
						
					
					
						commit
						f2298f4085
					
				
							
								
								
									
										132
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										132
									
								
								README.md
									
									
									
									
									
								
							@ -1,113 +1,61 @@
 | 
			
		||||
# 黄色赛道检测与距离估算
 | 
			
		||||
# 任务模块
 | 
			
		||||
 | 
			
		||||
这个项目提供了一套用于检测黄色赛道并估算距离的工具。基于OpenCV的计算机视觉技术,能够从图像中识别黄色赛道,计算方向角度,并估算摄像机到赛道前方的距离。
 | 
			
		||||
## top
 | 
			
		||||
 | 
			
		||||
## 功能特点
 | 
			
		||||
1. “装货 / qrcode”
 | 
			
		||||
2. 曲线赛道
 | 
			
		||||
3. 上下坡
 | 
			
		||||
    - 存在两种可能性
 | 
			
		||||
4. 石板道
 | 
			
		||||
5. 栅栏 / 栏杆
 | 
			
		||||
 | 
			
		||||
- 黄色赛道检测与分割
 | 
			
		||||
- 赛道方向和角度计算
 | 
			
		||||
- 赛道距离估算
 | 
			
		||||
- 结果可视化展示
 | 
			
		||||
- 提供易于使用的测试工具
 | 
			
		||||
## Task-1:出生点 - 取货
 | 
			
		||||
 | 
			
		||||
## 安装依赖
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
确保已安装以下依赖库:
 | 
			
		||||
从二维码取货完,然后走到弯道入口。
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
pip install opencv-python numpy
 | 
			
		||||
```
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## 使用方法
 | 
			
		||||
### 校准前方横线 & 距离距离
 | 
			
		||||
 | 
			
		||||
### 基本用法
 | 
			
		||||
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)
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
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:上下坡
 | 
			
		||||
同样需要考虑两个方向。(正式计时各有一半的概率)
 | 
			
		||||
> 感觉两个坡度稍微有一点点区别。
 | 
			
		||||
 | 
			
		||||
项目提供了一个方便的测试脚本:
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
python test_track_detection.py --image path/to/your/image.jpg --observe --save result.jpg
 | 
			
		||||
```
 | 
			
		||||
以及反方向。
 | 
			
		||||
 | 
			
		||||
参数说明:
 | 
			
		||||
- `--image`: 要处理的图像路径(必需)
 | 
			
		||||
- `--save`: 结果图像保存路径(可选)
 | 
			
		||||
- `--observe`: 显示处理步骤的中间结果
 | 
			
		||||
- `--delay`: 中间步骤显示的延迟时间,单位为毫秒(默认500ms)
 | 
			
		||||
## Task-4:石板路
 | 
			
		||||
 | 
			
		||||
## 技术细节
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
### 检测原理
 | 
			
		||||
## Task-5:过栅栏
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## 示例结果
 | 
			
		||||
 | 
			
		||||
处理后的图像将包含以下信息:
 | 
			
		||||
- 红色点:表示赛道的顶部和底部中心点
 | 
			
		||||
- 绿色线:表示赛道的中心线
 | 
			
		||||
- 文本信息:距离、角度和方向
 | 
			
		||||
 | 
			
		||||
## 注意事项
 | 
			
		||||
 | 
			
		||||
- 该方法在光照条件稳定的环境中效果最佳
 | 
			
		||||
- 黄色赛道需要与背景有足够的对比度
 | 
			
		||||
- 摄像机应保持相对稳定的高度和角度
 | 
			
		||||
- 实际应用中需要根据具体场景调整参数
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user