mediapipe手势
时间: 2025-01-08 15:52:21 浏览: 3
### 使用 MediaPipe 进行手势识别
#### 安装依赖库
为了实现基于 MediaPipe 的手势识别,需先安装必要的 Python 库。这包括 `mediapipe` 和 `opencv-python`,以及用于简化操作的手部检测模块 `cvzone`。
```bash
pip install mediapipe opencv-python cvzone numpy rerun-sdk
```
#### 初始化手部追踪器
创建一个基础的应用程序框架来初始化摄像头输入,并设置 MediaPipe 手部模型实例化对象以便后续处理图像帧中的手部特征点位置信息[^1]。
```python
import cv2
from cvzone.HandTrackingModule import HandDetector
import rerun as rr # 可视化工具
cap = cv2.VideoCapture(0)
detector = HandDetector(maxHands=2)
rr.init("Hand Tracking") # 启动Rerun可视化环境
```
#### 处理视频流并提取手部关键点
接下来,在循环内读取每一帧画面,利用之前定义好的探测器对象对手掌轮廓进行分析获取坐标数据;同时调用 Rerun 记录下这些几何结构以供实时查看效果[^4]。
```python
while True:
success, img = cap.read()
hands, img = detector.findHands(img) # 检测双手
if hands:
hand1 = hands[0]
lmList1 = hand1["lmList"] # 获取第一个手掌的所有地标列表
for id, lm in enumerate(lmList1):
h, w, c = img.shape
cx, cy = int(lm[0]*w), int(lm[1]*h)
rr.log_point(f"hand_landmark_{id}", [cx,cy], color=[255,0,0]) # 绘制每个关节
fingersUp = detector.fingersUp(hand1) # 判断哪根手指抬起
print(f"Fingers up: {fingersUp}")
rr.clear() # 清除旧的数据记录
cv2.imshow("Image", img)
key = cv2.waitKey(1)
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
```
上述代码展示了如何捕捉来自网络摄像机的画面并通过 MediaPipe 对其中的人类手部实施跟踪定位,再借助额外的逻辑判断哪些指头处于举起状态从而完成简单形式上的“手势”解析工作[^3]。
阅读全文