基于Mediapipe的人体骨骼角度角度获取

date
Apr 7, 2024
slug
mediapipe
status
Published
tags
Website
summary
基于Mediapipe的人体骨骼角度角度获取
type
Post
网址
URL
📌
接的一个小兼职 需求描述:给定指定视频,获取视频中人体部分关节角度(双踝关节,双膝关节,双髋关节,背部) 大体思路:基于mediapipe的pose模型获取每一帧的人体骨骼关节点,根据指定关节的上下连接关节计算关节角度;

MediaPipe

MediaPipe 是一个由 Google 开发的开源框架,旨在帮助开发者轻松构建和部署跨平台的视觉、音频和传感器数据处理管道。

安装 MediaPipe

首先,通过 Python 的包管理器 pip 完成安装:
简单示例:手部关键点检测
以下是一个简单的示例,展示了如何使用 MediaPipe 进行实时手部关键点检测。
  1. 导入所需的库:首先,你需要导入 MediaPipe 和 OpenCV(用于视频处理)。
    1. 初始化 MediaPipe 手部解决方案:使用 MediaPipe 提供的手部解决方案。
      1. 视频帧处理:从摄像头读取视频帧,并将其传递给 MediaPipe 手部模块。
        1. 显示结果:上述代码将打开一个窗口,实时显示检测到的手部关键点。
        1. 结束程序:当你按下 ESC 键时,程序会退出。
        这个简单的示例展示了如何使用 MediaPipe 来检测视频流中的手部关键点。你可以在此基础上扩展功能,比如增加手势识别或将检测到的关键点用于进一步的处理。 MediaPipe 提供了多种解决方案,不仅限于手部关键点检测,还包括面部标记、姿势估计、物体检测等,你可以根据自己的需求选择合适的模块进行开发。

        计算关节点角度

        以下是如何计算各个关节角度的详细步骤:
        1. 膝关节角度(以左膝为例):
            • 确定三个点:左髋(hip_left)、左膝(knee_left)、左踝(ankle_left)。
            • 计算向量:一个是从髋到膝的向量,另一个是从膝到踝的向量。
            • 使用这两个向量计算夹角,这就是膝关节的角度。
        1. 髋关节角度(以左髋为例):
            • 确定三个点:中点肩膀(shoulder_mid,左右肩膀中点)、左髋(hip_left)、左膝(knee_left)。
            • 计算向量:一个是从中点肩膀到髋的向量,另一个是从髋到膝的向量。
            • 计算这两个向量之间的角度,这就是髋关节的角度。
        1. 踝关节角度(以左踝为例):
            • 确定三个点:左膝(knee_left)、左踝(ankle_left)和左脚尖(foot_index_left)。左脚尖不直接提供,可以通过从踝关节向下延伸一小段距离得到一个假想点。
            • 计算向量:一个是从膝到踝的向量,另一个是从踝到脚尖的向量。
            • 通过这两个向量计算夹角,这是踝关节的角度。
        1. 腰部角度:
            • 确定三个点:左髋(hip_left)、肩部中点(shoulder_mid)、右髋(hip_right)。
            • 计算向量:一个是从左髋到肩部中点的向量,另一个是从肩部中点到右髋的向量。
            • 计算这两个向量之间的角度,这就是腰部的角度。
        notion image
        如果角度大于180度,使用 360Angle360−Angle 来获取小于180度的内角。这样就可以得到每个关节的角度。

        完整代码

         

        © chen_yan 2024 - 2025