mediapipe摄像头识别3 种不同的人体静态姿态(站、坐、躺)python
时间: 2023-06-14 19:08:06 浏览: 132
MediaPipe 是一个跨平台的机器学习框架,可以用来进行图像和视频的处理,其中包括姿态估计。要使用 MediaPipe 进行姿态估计,可以使用其提供的 Pose 模型。下面是一个基本的示例代码,可以通过摄像头捕捉视频,并识别人体的姿态:
```python
import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_pose = mp.solutions.pose
# 初始化姿势估计模型
pose = mp_pose.Pose()
# 打开摄像头
cap = cv2.VideoCapture(0)
while cap.isOpened():
# 从摄像头获取一帧图像
success, image = cap.read()
if not success:
break
# 将图像转换为 RGB 格式
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# 进行姿势估计
results = pose.process(image)
# 绘制姿势估计结果
if results.pose_landmarks:
mp_drawing.draw_landmarks(
image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
# 检测人体静态姿态
landmarks = results.pose_landmarks.landmark
if landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER].y > landmarks[mp_pose.PoseLandmark.LEFT_ELBOW].y \
and landmarks[mp_pose.PoseLandmark.RIGHT_SHOULDER].y > landmarks[mp_pose.PoseLandmark.RIGHT_ELBOW].y:
print("站立")
elif landmarks[mp_pose.PoseLandmark.LEFT_SHOULDER].y < landmarks[mp_pose.PoseLandmark.LEFT_HIP].y \
and landmarks[mp_pose.PoseLandmark.RIGHT_SHOULDER].y < landmarks[mp_pose.PoseLandmark.RIGHT_HIP].y:
print("坐姿")
else:
print("躺姿")
# 显示图像
cv2.imshow('MediaPipe Pose', image)
# 按下 q 键退出循环
if cv2.waitKey(5) & 0xFF == ord('q'):
break
# 释放摄像头并关闭窗口
cap.release()
cv2.destroyAllWindows()
```
在上述代码中,我们使用了 `mp_pose.Pose()` 初始化了一个姿态估计模型,然后使用 `pose.process(image)` 对图像进行姿态估计。最后,我们根据估计结果检测人体的静态姿态。代码中使用的是比较简单的检测方法,也可以根据具体应用场景,进行更加精细的检测方法。