101 lines
2.6 KiB
Markdown
101 lines
2.6 KiB
Markdown
# 箭头方向检测功能
|
||
|
||
本模块提供了从图像中检测绿色箭头指向方向的功能。可以集成到机器人控制系统中,用于根据视觉信息引导机器人运动。
|
||
|
||
## 功能特性
|
||
|
||
- 从图像中提取绿色箭头
|
||
- 判断箭头指向方向(左或右)
|
||
- 可视化检测过程
|
||
- 与ROS图像订阅集成
|
||
- 可作为独立工具使用
|
||
|
||
## 文件结构
|
||
|
||
- `utils/decode_arrow.py` - 核心箭头检测算法
|
||
- `task_5/detect_arrow_direction.py` - 与ImageProcessor集成的箭头检测器
|
||
- `test/test_arrow.py` - 命令行测试工具
|
||
- `test/test_arrow_with_image.py` - 带参数的图像测试工具
|
||
|
||
## 使用方法
|
||
|
||
### 1. 独立测试箭头检测
|
||
|
||
```bash
|
||
# 基本用法
|
||
python test/test_arrow.py path/to/image.png
|
||
|
||
# 高级用法
|
||
python test/test_arrow_with_image.py path/to/image.png --save result.jpg --show --debug
|
||
```
|
||
|
||
### 2. 在机器人任务中使用
|
||
|
||
箭头检测功能已集成到`task_5.py`中。机器人会根据检测到的箭头方向(左或右)来调整其移动方向。
|
||
|
||
```python
|
||
from task_5.task_5 import run_task_5
|
||
|
||
# 机器人控制代码
|
||
run_task_5(ctrl, msg, image_processor) # image_processor可选
|
||
```
|
||
|
||
### 3. 作为独立模块使用
|
||
|
||
```python
|
||
from utils.decode_arrow import detect_arrow_direction, visualize_arrow_detection
|
||
|
||
# 检测箭头方向
|
||
image = cv2.imread("path/to/image.jpg")
|
||
direction = detect_arrow_direction(image)
|
||
print(f"检测到的箭头方向: {direction}")
|
||
|
||
# 可视化检测过程
|
||
visualize_arrow_detection(image, "result.jpg")
|
||
```
|
||
|
||
或者使用集成的ArrowDetector类:
|
||
|
||
```python
|
||
from task_5.detect_arrow_direction import ArrowDetector
|
||
|
||
# 初始化检测器
|
||
detector = ArrowDetector()
|
||
|
||
# 获取箭头方向
|
||
direction = detector.get_arrow_direction()
|
||
print(f"检测到的箭头方向: {direction}")
|
||
|
||
# 可视化并保存结果
|
||
detector.visualize_current_detection("result.jpg")
|
||
|
||
# 清理资源
|
||
detector.destroy()
|
||
```
|
||
|
||
## 算法原理
|
||
|
||
1. 将图像转换为HSV颜色空间
|
||
2. 使用颜色阈值提取绿色区域
|
||
3. 查找绿色区域的轮廓
|
||
4. 分析轮廓的几何特性,确定箭头方向
|
||
5. 计算轮廓的左右区域像素密度,判断指向方向
|
||
|
||
## 参数调整
|
||
|
||
如果检测效果不理想,可以调整以下参数:
|
||
|
||
1. `utils/decode_arrow.py`中的绿色HSV阈值:
|
||
```python
|
||
lower_green = np.array([40, 50, 50]) # 绿色的HSV下限
|
||
upper_green = np.array([80, 255, 255]) # 绿色的HSV上限
|
||
```
|
||
|
||
2. 根据实际情况调整像素密度比较的逻辑。
|
||
|
||
## 注意事项
|
||
|
||
- 确保图像中的箭头颜色为绿色
|
||
- 图像中应该只有一个明显的箭头
|
||
- 光照条件会影响绿色提取的效果
|
||
- 如果检测结果不准确,可能需要调整HSV阈值 |