python利用 mediapipe库做人体关健点检测
mediapipe库是对人体33个关键点做检测并标记的一个功能库,其33个人体关键点如下图所示
该库的具体用法如下
1.对静态图像标记
import mediapipe as mp #引入库
mp_pose = mp.solutions.pose
# 导入绘制函数
mp_drawing = mp.solutions.drawing_utils
self.cv_show("s",img)
pose = mp_pose.Pose(static_image_mode=True, # 静态图片
model_complexity=1, # 选择模型 0 1 2 性能逐渐增强
smooth_landmarks=True, # 平滑关键点
enable_segmentation=True, # 是否人体抠图
min_detection_confidence=0.5, # 置信度阈值
min_tracking_confidence=0.5 # 追踪阈值
)
```python
#检测结果
result=pose.process(img_rgb) #利用对象的process方法得到检测结果
#可视化结果
mp_drawing.draw_landmarks(img,result.pose_landmarks,mp_pose.POSE_CONNECTIONS)#result.pose_landmarks表示图片上的关键点,pose_connections表示将关键点连在一起
2.对动态视频进行关键点检测
利用opencv库读取视并得到每一帧的图片,再利用mediapipe库对每一帧图片进行关键点检测,得到结果。
mp_pose=mp.solutions.pose
mp_drawing=mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
pose = mp_pose.Pose(static_image_mode=False, # False表示是连续帧视频
model_complexity=2, # 选择模型 0 1 2 性能逐渐增强
smooth_landmarks=True, # 平滑关键点
enable_segmentation=True, # 是否人体抠图
min_detection_confidence=0.5, # 置信度阈值
min_tracking_confidence=0.9 # 追踪阈值
)
利用该方法得到的人体33个关键点的坐标都保存在 result,landmarks中,如果要查看具体某个关键点的信息,则可以用result.landmarks.landmark[i],i即对应上图的关键点展示图 。
3.后续展望
如上所示,能得到每个关键点的具体信息 ,可以展望利用这些信息结合运动学,人体生物学等相关知识,来进行
诸如运动(深蹲,俯卧撑计数)等的检测或者运动动作规范等应用