Skip to content

ezatgz/gesturedemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GestureDemo

License: GPL v3

GestureDemo 这是一个基于 Android 的手势交互演示项目,展示了如何集成 MediaPipe Tasks Vision 进行实时的手部关键点检测与手势识别,并将其应用于交互式场景中。

🚀 项目特性

  • 集成 MediaPipe: 使用最新的 MediaPipe Tasks Vision 库实现高性能的手势识别。
  • 实时响应: 基于 CameraX 和异步处理逻辑,实现低延迟的交互体验。
  • 多样化演示:
    • 石头剪刀布: 识别“拳头”、“手掌”和“胜利”手势与电脑对战。
    • 数字识别: 基于手部关键点几何逻辑识别数字 0-5。
    • 路径追踪: 追踪食指尖端的移动轨迹,展示精准的空间定位能力。
  • 高度自适应: 完美处理相机旋转、镜像以及不同 ScaleType 下的坐标映射。
  • Jetpack Compose: 完全使用声明式 UI 构建,逻辑清晰。

🛠️ 技术栈

  • 开发语言: Kotlin
  • UI 框架: Jetpack Compose
  • 相机框架: CameraX
  • AI 模型: MediaPipe (Hand Landmarker & Gesture Recognizer)
  • 架构模式: MVVM (ViewModel, Repository, Compose)

📂 结构说明

app/src/main/java/com/ezatgz/gesturedemo/
├── core/               # 核心能力层
│   ├── camera/         # CameraX 封装与 MediaPipe 助手类
│   ├── data/           # 用户偏好与数据仓库
│   └── ui/             # 通用相机预览与关键点绘制组件
├── demos/              # 业务演示层
│   ├── number/         # 数字识别场景
│   ├── path/           # 路径追踪绘图场景
│   └── rps/            # 石头剪刀布游戏场景
├── ui/                 # 顶层 UI
│   ├── portal/         # 入口(主菜单)
│   └── theme/          # 颜色、字体与主题定义
└── MainActivity.kt     # 应用入口与导航配置

📝 开发备注

  • 坐标映射: 项目在 HandLandmarksCanvas 中实现了复杂的坐标变换逻辑,确保在 FILL_CENTER 模式下,手部骨架能精准覆盖在预览画面上。
  • 兼容性: 针对 Android 13/14 上的 SurfaceView 可能出现的花屏问题,项目在相关组件中提供了对 TextureView 的支持。
  • 自定义逻辑: 数字识别不仅依赖手势模型,还结合了 MyLib/ 中探讨的指尖位置几何逻辑,以增强识别的准确性。

📸 运行截图

主界面 数字识别
主界面 数字识别
路径追踪 石头剪刀布
路径追踪 石头剪刀布

Powered by MediaPipe & Jetpack Compose.

About

a demo app with mediapipe

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages