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.
 

4.5 KiB

一、本轮迭代目标

本 Sprint 主要目标是完成 基于浏览器端的手势控制系统雏形,实现如下基础功能:

  • 搭建前端 Web 应用结构与 UI 页面
  • 集成 MediaPipe 手势识别模型,完成实时手势检测
  • 映射部分手势为系统控制行为(鼠标移动、点击等)
  • 搭建基础手势处理逻辑与组件封装结构
  • 支持语音识别指令发送流程(准备后端对接)

二、本轮主要完成内容

类别 工作内容
前端搭建 基于 Vite + Vue 3 + TypeScript 完成项目结构、模块划分、页面初始化
手势识别 集成 Google MediaPipe WASM 模型,完成实时检测与渲染
控制逻辑 封装 GestureHandlerTriggerAction,实现手势到系统操作的映射
UI设计 完成仪表盘式主界面设计,支持响应式、自定义手势预览等
模型结构 初步梳理 Detector 识别流程,统一封装初始化与推理逻辑
后端准备 初始化 Python 接口 WebSocket 构建,支持语音识别交互

三、系统结构设计

[用户摄像头]
     ↓
[VideoDetector.vue] → 捕捉视频帧,传入检测器
     ↓
[Detector.ts] → 调用 MediaPipe 识别手势
     ↓
[GestureHandler.ts] → 映射行为(鼠标/键盘/语音)
     ↓
[TriggerAction.ts] → 向后端/系统发出控制指令
     ↓
[Python 后端](语音识别/扩展指令) ← WebSocket 接入

四、核心技术栈与理由

技术 用途 原因
Vue 3 + Vite 前端框架 + 构建工具 快速开发,热更新快,Composition API 更灵活
TypeScript 增强类型约束 减少运行时错误,提升可维护性
MediaPipe Tasks 手势识别模型 体积小,支持浏览器部署,准确率高
WebSocket 前后端实时通信 保持实时交互流畅
Python + FastAPI 后端扩展接口(语音) 快速搭建接口,后续支持 Py 模型运行

五、主要功能点与说明

1. Detector 类封装

  • 初始化 WASM 模型与识别器
  • 封装 detect() 每帧调用逻辑
  • 支持获取 landmarks, gestures, handedness

2. 手势识别与映射

  • 仅识别食指 → 鼠标移动
  • 食指 + 中指 → 鼠标点击
  • 食指 + 拇指捏合 → 滚动
  • 四指竖起 → 发送快捷键
  • 小指+拇指 → 启动语音识别(前端 WebSocket)

3. UI 界面模块

  • 实时视频预览窗口
  • 子窗口:手势反馈 / 执行动作提示
  • 配置面板:开关检测 / 配置行为映射

六、识别代码示例(关键手势)

if (gesture === HandGesture.ONLY_INDEX_UP) {
  this.triggerAction.moveMouse(x, y)
}
if (gesture === HandGesture.INDEX_AND_THUMB_UP) {
  this.triggerAction.scrollUp()
}
  • 每种手势匹配后,调用封装的 WebSocket + 系统接口发送动作
  • TriggerAction 支持复用

七、问题与解决方案

问题描述 解决方法
WebSocket 连接后反复断开 增加连接状态判断 readyState !== OPEN,避免提前发送
Tauri 插件调用 invoke undefined 使用 npm run tauri dev 启动,而非普通浏览器启动
页面刷新后路由丢失(404) Vue Router 改为 createWebHashHistory() 模式
模型未加载或报错提示 增加 loading 控制,捕捉初始化异常

八、未来规划(Sprint 2 预告)

方向 说明
多手势拓展 三指滚动、多指触发多功能、多手联合判断
自定义 .task 模型 支持用户采集数据,自定义模型替换现有 MediaPipe 模型
后端语音指令集成 Vosk 模型识别语音,触发系统控制
设置项管理 实现用户自定义快捷键、手势配置界面