mi-task/test/task-arrow/README_arrow_detection.md
Havoc cfcdf24a4c feat(task_5): 添加箭头方向检测与运动控制
- 初始化箭头检测器并获取图像
- 根据检测到的箭头方向调整运动方向
- 更新运动参数,包括速度和步态
- 添加资源清理逻辑以确保检测器正常关闭
2025-05-13 09:44:34 +08:00

2.6 KiB
Raw Blame History

箭头方向检测功能

本模块提供了从图像中检测绿色箭头指向方向的功能。可以集成到机器人控制系统中,用于根据视觉信息引导机器人运动。

功能特性

  • 从图像中提取绿色箭头
  • 判断箭头指向方向(左或右)
  • 可视化检测过程
  • 与ROS图像订阅集成
  • 可作为独立工具使用

文件结构

  • utils/decode_arrow.py - 核心箭头检测算法
  • task_5/detect_arrow_direction.py - 与ImageProcessor集成的箭头检测器
  • test/test_arrow.py - 命令行测试工具
  • test/test_arrow_with_image.py - 带参数的图像测试工具

使用方法

1. 独立测试箭头检测

# 基本用法
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中。机器人会根据检测到的箭头方向(左或右)来调整其移动方向。

from task_5.task_5 import run_task_5

# 机器人控制代码
run_task_5(ctrl, msg, image_processor)  # image_processor可选

3. 作为独立模块使用

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类

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阈值

    lower_green = np.array([40, 50, 50])  # 绿色的HSV下限
    upper_green = np.array([80, 255, 255])  # 绿色的HSV上限
    
  2. 根据实际情况调整像素密度比较的逻辑。

注意事项

  • 确保图像中的箭头颜色为绿色
  • 图像中应该只有一个明显的箭头
  • 光照条件会影响绿色提取的效果
  • 如果检测结果不准确可能需要调整HSV阈值