基于MediaPipe Hands手势检测系统-python

项目描述
基于深度学习MediaPipe Hands模型的手势识别系统。通过flask框架进行开发

项目功能
系统界面分为以下几个主要部分

视频显示区:实时显示摄像头画面和检测结果

运行环境
开发环境 pycharm
运行环境 py3.8

项目技术
前端技术

flask框架构建界面

后端技术

1. 计算机视觉(Computer Vision)
OpenCV(cv2):用于摄像头图像捕获、图像处理(颜色空间转换、轮廓检测、凸包计算等)和实时显示。

凸包(Convex Hull):用于检测手部轮廓,判断手指是否伸直(指尖是否在凸包外部)。

点与多边形测试(pointPolygonTest):用于计算指尖与手部轮廓的距离,判断手指是否张开。

2. 机器学习 & 深度学习
MediaPipe(Google 开源框架):

使用了 mediapipe.solutions.hands 模块,基于深度学习模型进行 手部关键点检测(21 个关键点)。

该模型能够实时检测手部姿态,并返回每个关键点的坐标(hand.landmark)。

3. 数学计算
向量角度计算:

使用 numpy 计算两个向量之间的夹角(np.dot 点积 + np.arccos 反余弦),用于区分不同手势(如数字 “1” 和 “9”)。

欧几里得距离:

通过指尖坐标与手部轮廓的关系判断手指是否伸直。

4. 手势识别逻辑
规则引擎:

根据伸出的手指数量(up_fingers)和指尖角度,匹配预定义的手势规则(如数字 “1”~”5″、”OK”、”Rock” 等)。

例如:

伸出 1 根手指(食指)且角度 <160° → 识别为 “9”。

伸出 2 根手指(食指+中指)→ 识别为 “2”。

伸出 5 根手指 → 识别为 “5”。

5. 交互逻辑
输入序列检测:

检测用户是否按特定顺序输入手势(如 [‘4′,’3′,’2′,’5’]),用于触发结束标志(end_flag=1)。

实时显示:

使用 cv2.putText 和 cv2.circle 在图像上标注识别结果和关键点。

6. 硬件交互
摄像头访问:

通过 cv2.VideoCapture(0) 调用默认摄像头,实时捕获视频流。

启动:手势识别.py

性能优化

模型预加载减少等待时间

以上系统源码经过技术整理与调试,确保能正常运行

提供最优质的资源集合

立即查看 了解详情