You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

5.9 KiB

Sprint 3 技术文档

识别到控制闭环打通 + 支持游戏操作


一、概述

本阶段实现了一个运行于浏览器端的手势识别系统,结合 MediaPipe 和 WebSocket,打通从摄像头手势识别 → 系统控制(鼠标、滚动、键盘) → 控制小游戏角色的全流程。

新增支持多种系统控制动作和游戏动作,包括:左右移动、跳跃、组合跳跃等。


二、模块结构概览

模块分工如下:

  • Detector.ts 加载并初始化 MediaPipe 手势模型,检测手部关键点与手势状态,并调用 GestureHandler
  • GestureHandler.ts 将识别出的手势映射为系统操作(鼠标、滚动、键盘指令等),支持连续确认、平滑处理、动作节流。
  • TriggerAction.ts 封装 WebSocket 通信,向后端发送 JSON 格式的控制命令。
[摄像头视频流]
     ↓
[VideoDetector.vue]
  - 捕捉视频帧
  - 显示实时画面
     ↓
[Detector.ts]
  - 使用 MediaPipe Tasks WASM 模型进行手势识别
  - 返回关键点、手势类型
     ↓
[GestureHandler.ts]
  - 将识别结果转为行为
  - 识别特定组合,如食指 + 拇指 → 滚动
     ↓
[TriggerAction.ts]
  - 向 WebSocket 发送控制指令
  - 控制鼠标/键盘/后端动作
     ↓
[后端 Python]
  - WebSocket 接口接收指令
  - 准备语音接口/控制中枢


三、识别手势说明(扩展后)

每帧识别手指竖起状态(拇指到小指,0 或 1),组合为状态串,查表识别对应手势:

状态串 手势名 动作描述
0,1,0,0,0 only_index_up 鼠标移动
1,1,0,0,0 index_and_thumb_up 鼠标点击
0,0,1,1,1 scroll_gesture_2 页面滚动
1,0,1,1,1 scroll_gesture_2 页面滚动(兼容变体)
0,1,1,1,1 four_fingers_up 发送快捷键(如播放/全屏)
1,1,1,1,1 stop_gesture 暂停/开始识别
1,0,0,0,1 voice_gesture_start 启动语音识别
0,0,0,0,0 voice_gesture_stop 停止语音识别
0,1,1,0,0 jump 小人跳跃(上键)
1,1,1,0,0 rightjump 小人右跳(右+上组合)
自定义判断 direction_right 小人右移(长按右键)
自定义判断 delete_gesture 小人左移(长按左键)

四、控制行为逻辑说明

鼠标控制

  • 移动:基于食指指尖位置映射至屏幕坐标,支持平滑处理,减少抖动。
  • 点击:食指与拇指同时上举,节流处理防止重复点击。
  • 滚动:捏合(拇指+食指)后上下移动控制滚动方向,带阈值判断。

快捷键/系统操作

  • 四指上举 → 发送自定义按键(如全屏、暂停、下一集等)。
  • 五指上举 → 暂停/开始识别。支持进度提示。
  • 删除手势(右手拇指伸出,其余收起)→ 连续发送 Backspace/方向键。
  • 自定义 holdKey 方法支持模拟长按。

游戏控制扩展(键盘模拟)

手势名 动作
delete_gesture 向左移动(左键长按)
direction_right 向右移动(右键长按)
jump 向上跳跃(上键)
rightjump 右跳(右后延迟上)

五、性能与稳定性处理

问题 解决方案
手势误判 连续帧确认(minGestureCount ≥ 5)
鼠标抖动 屏幕坐标引入平滑系数 smoothening
动作重复触发 节流控制点击/滚动/快捷键/方向键(如 CLICK_INTERVAL
WebSocket 中断重连 异常断线后自动重连,带重试时间间隔
滚动误触 拇指与食指距离阈值控制是否处于“捏合”状态
UI 状态提示不同步 使用全局 store(如 app_store.sub_window_info)更新

六、技术特性总结

  • 支持 MediaPipe WASM 模型在前端本地运行,低延迟识别
  • 所有动作模块化封装,便于未来扩展新手势、新控制指令
  • 手势控制与后端通过 WebSocket 实时交互,接口稳定
  • 支持游戏场景(虚拟角色)控制,具备实际互动展示能力
  • 控制逻辑可配置:如识别区域、快捷键内容、手势灵敏度

七、后续优化建议(下一阶段)

方向 目标
增加左手手势组合识别 允许双手协同控制,比如捏合+四指等
提升模型识别精度 支持定制 MediaPipe .task 文件、自采样训练
UI 设置面板 提供手势→动作自定义、阈值调节、快捷键修改
引入语音控制 Whisper/Vosk 实现语音命令解析,结合手势联动使用
多模式切换 视频控制、PPT 控制、游戏控制等可切换交互模式
场景演示/视频录制 准备真实交互展示视频,用于演示或上线宣传

八、结语

本轮迭代成功实现了从手势识别到控制动作的完整闭环,扩展支持了游戏角色控制(多方向移动与跳跃),并在操作流畅性、准确性与系统解耦方面都取得实质进展。后续可以围绕用户可配置性、语音识别联动与多场景适配进一步扩展系统能力。