2.6 KiB
2.6 KiB
箭头方向检测功能
本模块提供了从图像中检测绿色箭头指向方向的功能。可以集成到机器人控制系统中,用于根据视觉信息引导机器人运动。
功能特性
- 从图像中提取绿色箭头
- 判断箭头指向方向(左或右)
- 可视化检测过程
- 与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()
算法原理
- 将图像转换为HSV颜色空间
- 使用颜色阈值提取绿色区域
- 查找绿色区域的轮廓
- 分析轮廓的几何特性,确定箭头方向
- 计算轮廓的左右区域像素密度,判断指向方向
参数调整
如果检测效果不理想,可以调整以下参数:
-
utils/decode_arrow.py
中的绿色HSV阈值:lower_green = np.array([40, 50, 50]) # 绿色的HSV下限 upper_green = np.array([80, 255, 255]) # 绿色的HSV上限
-
根据实际情况调整像素密度比较的逻辑。
注意事项
- 确保图像中的箭头颜色为绿色
- 图像中应该只有一个明显的箭头
- 光照条件会影响绿色提取的效果
- 如果检测结果不准确,可能需要调整HSV阈值