|
|
@ -4,19 +4,41 @@ |
|
|
|
|
|
|
|
## 一、项目简介 |
|
|
|
|
|
|
|
本项目通过实时摄像头捕捉与 AI 手势识别,构建了一个**无需物理手柄**的赛车游戏交互系统。用户可直接用手势完成加速、刹车、转向等指令,真正实现“举手即控”,打造更**自然流畅、沉浸感强**的赛车体验。 |
|
|
|
本项目基于 Google 的 MediaPipe 手部追踪系统,结合自定义几何规则与信号滤波算法,实现了无需物理手柄的赛车游戏操作方式。用户通过简单自然的手势(如拇指上扬、手掌倾斜等),即可完成加速、刹车、转向等核心动作,实现“举手即控”,打造更**自然流畅、沉浸感强**的赛车体验。 |
|
|
|
|
|
|
|
项目已成功在 Steam 游戏 **《Rush Rally Origins》** 中落地实操,演示中可见控制精准、响应及时,适用于所有兼容 Xbox 手柄的赛车类游戏。 |
|
|
|
系统已成功应用于 Steam 游戏 **《Rush Rally Origins》**,在实机演示中展现出流畅、精准的控制体验,广泛适用于支持 Xbox 手柄输入的竞速类游戏。 |
|
|
|
|
|
|
|
------ |
|
|
|
|
|
|
|
## 二、核心功能亮点 |
|
|
|
|
|
|
|
- **30FPS 实时视频流捕捉**:稳定接入 USB 摄像头,快速获取手部动作 |
|
|
|
- **Mediapipe 手部追踪识别**:结合拇指状态与方向角度,识别多种驾驶手势 |
|
|
|
- **vgamepad 虚拟 Xbox 控制器**:将识别结果转换为真实手柄指令,适配游戏 |
|
|
|
- **卡尔曼滤波稳定手势信号**:平滑角度数据,避免误识别与抖动 |
|
|
|
- **PySide2 图形界面支持**:自带窗口反馈、图像展示、灵敏度调节 UI 面板 |
|
|
|
为提升可视性与操作便利性,系统配套开发了基于 PySide2 的图形界面,集成摄像头画面、手势识别反馈、指令图标展示与灵敏度调节等功能,支持完整的交互闭环。 |
|
|
|
|
|
|
|
**主要功能:** |
|
|
|
|
|
|
|
| 功能项 | 实现细节 | |
|
|
|
| ------------ | ---------------------------------------------------- | |
|
|
|
| 实时画面展示 | OpenCV 摄像头采集 + QImage 渲染窗口 | |
|
|
|
| 手势图标反馈 | 根据识别结果在界面中央展示代表性图标(如加速、左转) | |
|
|
|
| 文本提示 | 显示当前识别出的指令(如“加速”、“左转”) | |
|
|
|
| 灵敏度调节 | 滑动条实时控制手势判断敏感度(用于调试与个性化) | |
|
|
|
| 平滑识别 | Kalman Filter + Sigmoid 映射,过滤角度抖动与误判 | |
|
|
|
| 虚拟控制输出 | 手势状态映射为 Xbox 指令,传递至 `vgamepad` 接口 | |
|
|
|
|
|
|
|
**稳定机制:** |
|
|
|
|
|
|
|
- 采用手势状态组合(如 `"left_up"`、`"unknown_bark"`)构建指令队列; |
|
|
|
- 取历史 N 次指令中出现频率最高的结果作为最终决策; |
|
|
|
- 实现多帧确认机制,避免“瞬时误识别”导致错误控制。 |
|
|
|
|
|
|
|
**部分功能:** |
|
|
|
|
|
|
|
- 👋 中心图标实时展示当前识别手势 |
|
|
|
- 📷 窗口左上角显示摄像头原始图像流 |
|
|
|
- 🎚️ 窗口底部滑动条调整灵敏度 |
|
|
|
- 🔘 “退出”按钮关闭程序 |
|
|
|
|
|
|
|
> 项目整体已形成:摄像头采集 → 手势识别 → 稳定判断 → 图像反馈 → 虚拟控制 的完整闭环。 |
|
|
|
|
|
|
|
------ |
|
|
|
|
|
|
@ -43,13 +65,13 @@ |
|
|
|
pip install -r requirements.txt |
|
|
|
``` |
|
|
|
|
|
|
|
1. 运行主程序: |
|
|
|
3. 运行主程序: |
|
|
|
|
|
|
|
``` |
|
|
|
python main.py |
|
|
|
``` |
|
|
|
|
|
|
|
> 确保系统有可用摄像头,支持 DirectShow 接口调用 |
|
|
|
> 请确保电脑已连接摄像头,并支持 DirectShow 接口访问 |
|
|
|
|
|
|
|
------ |
|
|
|
|
|
|
|