从动作图片中提取骨骼角度并保存为 CSV 文件

该程序旨在从输入的动作图片文件夹中提取人体骨骼关键点,计算骨骼角度,并将角度信息保存为 CSV 文件。

功能

  • 提取动作图片中的人体骨骼关键点
  • 计算骨骼角度
  • 将骨骼角度保存为 CSV 文件

算法流程

  1. 导入所需库:包括 Mediapipe、OpenCV (cv2) 和 Pandas 等库。
  2. 定义保存骨骼角度的函数:用于将角度列表保存为 CSV 文件。
  3. 初始化 Mediapipe:导入姿势检测和绘图库。
  4. 遍历动作文件夹:依次处理每个动作的图片。
  5. 读取图片:将图片转换为 RGB 格式。
  6. 处理图片:提取骨骼关键点。
  7. 计算骨骼角度:包括腿与右手的角度、左臀、左膝和左踝的角度、右臀、右膝和右踝的角度、右肩、右肘和右手腕的角度、左肩、左肘和左手腕的角度、左髋、左膝和左踝的角度、腰部、左髋和左肩的角度、右髋、右膝和右踝的角度、腰部、右髋和右肩的角度、鼻子、右肩和右手腕的角度。
  8. 将角度添加到角度列表中
  9. 保存角度列表到 CSV 文件
  10. 完成所有动作图片处理后,程序结束。

优化方向

  1. 异常处理机制:在处理某张图片时出现错误而中断程序。
  2. 封装骨骼角度计算函数:方便其他程序调用。
  3. 骨骼角度可视化:绘制骨骼关键点和角度的图表,更直观地展示动作的执行情况。
  4. 机器学习算法:例如神经网络,提高骨骼角度计算的准确性和稳定性。
  5. 多人姿态估计:支持同时处理多个人的动作。

代码示例

import mediapipe as mp
import cv2
import pandas as pd

# 定义保存骨骼角度的函数
def save_angles(angles, filename):
    df = pd.DataFrame(angles)
    df.to_csv(filename, index=False)

# 初始化 Mediapipe
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils

# 遍历动作文件夹
for action_folder in action_folders:
    # 遍历每个动作的图片
    for image_file in os.listdir(action_folder):
        # 读取图片
        image = cv2.imread(os.path.join(action_folder, image_file))
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

        # 处理图片,提取骨骼关键点
        with mp_pose.Pose(static_image_mode=True, min_detection_confidence=0.5) as pose:
            results = pose.process(image)

        # 计算骨骼角度
        angles = calculate_angles(results.pose_landmarks)

        # 将角度添加到角度列表中
        angles_list.append(angles)

# 将角度列表保存为 CSV 文件
save_angles(angles_list, 'angles.csv')

注意:

  • 该代码示例仅供参考,实际代码需要根据具体需求进行调整。
  • 算法流程中的步骤 7 和 8 中的具体计算方法需要根据实际需求进行定义。
  • 优化方向中的部分功能需要使用额外的库或算法实现。
从动作图片中提取骨骼角度并保存为CSV文件

原文地址: https://www.cveoy.top/t/topic/gQ25 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录