sample_hand_detection 示例应用使用基于 Python 的 ROS 2 节点从图像或摄像头流中检测手部和手部关键点。它使用 Qualcomm® AI Engine Direct SDK (QNN) 进行模型推理。
该模型来自 MediaPipe Hand Landmark Detector,这是一个机器学习流水线,可预测图像中手部的边界框和姿势骨架。该示例应用允许你输入名为 input_image.jpg 的静态图像或实时摄像头流,然后将结果作为 ROS topic /handlandmark_result 发布。
注意有关更多信息,请参见 GitHub 上的 sample_hand_detection。
图:sample_hand_detection 的示例效果
sample_hand_detection 的流水线流程
图:sample_hand_detection 的流水线流程
sample_hand_detection 中使用的 ROS 节点
| ROS 节点 | 说明 |
|---|---|
| qrb_ros_camera | Qualcomm ROS 2 包,使用参数捕获图像并将其发布到 ROS topic。 |
| qrb_ros_nn_inference | 加载训练好的 AI 模型,接收预处理后的图像,执行推理并发布结果。 |
qrb_ros_hand_detector | 订阅一个图像 topic(来自静态图像或摄像头),执行预处理和后处理,并发布检测结果。 |
palm_preprocessor | 通过调整大小、归一化图像和转换图像格式来准备手掌检测的输入图像数据,以满足模型的要求。 |
palm_postprocessor | 解释手掌检测模型的原始输出,提取边界框和置信度分数,应用过滤和可选的 NMS,并将结果映射到原始图像坐标。 |
landmark_preprocessor | 基于手掌检测结果处理裁剪出的手部区域。调整并归一化图像,并可能应用几何变换以对齐手部方向。 |
landmark_postprocessor | 解码关键点检测模型的输出,提取手部关键点并将它们映射回原始图像空间。 |
sample_hand_detection 中使用的 ROS topic
| ROS topic | 类型 | 发布者 |
|---|---|---|
/handlandmark_result | sensor_msgs.msg.Image | qrb_ros_hand_detector |
/palm_detector_input_tensor | qrb_ros_tensor_list_msgs.msg.TensorList | qrb_ros_hand_detector |
/palm_detector_output_tensor | qrb_ros_tensor_list_msgs.msg.TensorList | qrb_ros_nn_inference |
/landmark_detector_input_tensor | qrb_ros_tensor_list_msgs.msg.TensorList | qrb_ros_hand_detector |
/landmark_detector_output_tensor | qrb_ros_tensor_list_msgs.msg.TensorList | qrb_ros_nn_inference |
/image_raw | sensor_msgs.msg.Image | qrb_ros_camera |
前提条件
你已完成 设置运行示例应用的环境 中的设置。开箱即用运行 sample_hand_detection
构建并运行 sample_hand_detection
以下步骤以 Dragonwing IQ-9075 Evaluation Kit 为例构建 sample_hand_detection 包。
试一试
试一试
1
在主机计算机上构建并打包
- 构建示例应用项目。
- 打包并将示例应用推送到设备。
2
在开发套件上安装并运行
- 安装示例应用。
SSH Session
- 按照 开箱即用运行 sample_hand_detection 中的步骤运行示例应用。

