基于手势识别的 PPT 智能控制系统
毕业设计答辩 · 钟文清 · 深圳职业技术大学 · 2026年5月
研究背景与目标
人机交互从键盘鼠标发展到触摸、语音,手势交互是下一代自然交互方式。演讲场景中演示者受限于遥控器,无法在台上自由走动与观众互动。
本系统基于 MediaPipe + OpenCV + CustomTkinter 实现低延迟、高精度的实时手势识别,通过手势控制 PPT 翻页与放映。
支持手势一览
技术架构
处理流程:
视频采集(OpenCV) → 关键点检测(MediaPipe 21点) → 手势识别(骨架分析) → 防抖缓冲(15帧投票) → 死锁保护(冷却时间) → UI展示(CustomTkinter)
核心识别算法
手指状态分析
- 指尖-指根判据:TIP.y < MCP.y → 手指伸展(指尖高于指根)
- 拇指特殊处理:距离 / 掌宽 > 0.9 → 拇指伸出(归一化比例,免疫远近)
- OK 手势:拇指-食指闭合距离 < 0.05
防抖平滑机制
- 15 帧缓冲队列,连续帧过阈值才输出
- 多数投票机制稳定手势识别结果
死锁保护
- 握拳 → is_paused=True,拦截一切指令
- 仅 OK 手势可解除死锁状态
系统架构
| 文件 | 职责 |
| main.py | 程序入口,启动 CustomTkinter 主循环 |
| gesture_detector.py | 手势识别核心(MediaPipe) |
| ppt_controller.py | PPT 控制(PyAutoGUI 按键注入) |
| ctk_app.py | UI 界面(暗色仪表盘 + 手势图鉴双栏卡片) |
技术栈
| 技术 | 用途 |
| MediaPipe 0.10 | 手部检测 + 21点骨架提取 |
| OpenCV 4.x | 摄像头采集 + 图像处理 |
| PyAutoGUI | 模拟键盘按键(翻页/放映/退出) |
| CustomTkinter | 现代化暗色 GUI 框架 |
| Threading | 多线程解耦:AI后台计算 + UI主线程20ms轮询 |
UI 设计亮点
- 暗色主题:深色背景 + 霓虹配色
- 实时状态栏:摄像头/手势/动作三行状态显示
- 手势图鉴:双栏卡片式指令说明
- 全屏模式:F11 无缝全屏切换
测试结果与总结
系统优势
- 防抖+死锁双保险,最大程度降低误触发率
- 多线程解耦架构,UI 与 AI 各自独立、互不阻塞
- 比例算法识别拇指,免疫摄像头远近影响
- 全兼容 WPS / PowerPoint,无需安装额外软件
已知限制
- 仅支持静态手势,不支持挥手等动态手势
- 强光或手部与背景颜色相近时检测率下降
- 依赖摄像头质量,低分辨率影响关键点精度
未来展望
- 引入深度学习模型(LSTM)支持动态手势
- 自定义训练手势模型 · 支持双手交互
- 手机 App 移植 · 无障碍场景适配
← 返回作品集