2021-10-04

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.后续展望

 如上所示,能得到每个关键点的具体信息  ,可以展望利用这些信息结合运动学,人体生物学等相关知识,来进行
 诸如运动(深蹲,俯卧撑计数)等的检测或者运动动作规范等应用

猜你喜欢

转载自blog.csdn.net/qq_45836365/article/details/120609460
今日推荐