用mediapipe检测人体是否运动的代码
时间: 2023-10-14 18:04:55 浏览: 77
pyqt5+AI健身+CPU实时检测mediapipe 可视化界面opencv实现人体关键点检测,AI健身计数等功能
5星 · 资源好评率100%
以下是使用Mediapipe检测人体是否运动的Python代码示例:
```python
import cv2
import mediapipe as mp
# 初始化 Mediapipe 的 Pose 模型
mp_pose = mp.solutions.pose
pose = mp_pose.Pose(static_image_mode=True, min_detection_confidence=0.5)
# 读取视频文件或摄像头
cap = cv2.VideoCapture(0)
# 定义先前的姿势
previous_pose = None
while cap.isOpened():
# 读取一帧
ret, frame = cap.read()
if not ret:
break
# 将帧转换为 RGB 格式
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 检测人体姿势
results = pose.process(frame)
# 如果检测到姿势
if results.pose_landmarks is not None:
# 获取姿势
pose_landmarks = results.pose_landmarks.landmark
# 如果这是第一个帧,则将姿势设置为先前的姿势
if previous_pose is None:
previous_pose = pose_landmarks
# 比较当前姿势和先前姿势
movement = sum([abs(pose_landmarks[i].x - previous_pose[i].x) + abs(pose_landmarks[i].y - previous_pose[i].y) + abs(pose_landmarks[i].z - previous_pose[i].z) for i in range(len(pose_landmarks))])
# 如果运动大于一定阈值,则认为人体在运动
if movement > 0.1:
print("人体在运动")
# 将当前姿势设置为先前的姿势
previous_pose = pose_landmarks
# 将帧转换回 BGR 格式
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
# 显示帧
cv2.imshow("frame", frame)
# 按 q 键退出循环
if cv2.waitKey(1) == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
该代码使用了Mediapipe库中的Pose模型,将视频帧中的人体姿势检测出来,并通过比较当前姿势和先前姿势的差异来判断人体是否在运动。如果人体在运动,则输出“人体在运动”。
阅读全文