实现思路:

  1. 遍历不同文件夹中的图片,使用mediapipe库获取每张图片中人体骨骼的角度信息。

  2. 将每张图片中的角度信息与对应的动作标签存储到一个字典中。

  3. 将字典中的数据转换成csv格式,并存储到本地文件中。

代码实现如下:

import os
import csv
import mediapipe as mp

# 定义mediapipe的姿势估计类
mp_pose = mp.solutions.pose
mp_drawing = mp.solutions.drawing_utils

# 定义动作名称和对应的文件夹路径
actions = {
    "squat": "squat_images",
    "pushup": "pushup_images",
    "stand": "stand_images"
}

# 定义一个空字典,用于存储每个动作对应的角度信息
angles = {}

# 遍历每个动作对应的文件夹
for action, folder in actions.items():
    # 获取文件夹中的所有图片路径
    image_files = os.listdir(folder)
    # 创建一个空列表,用于存储每张图片的角度信息
    action_angles = []
    # 遍历每张图片
    for image_file in image_files:
        # 使用mediapipe获取图片中的角度信息
        with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:
            image_path = os.path.join(folder, image_file)
            image = mp.solutions.pose.Pose.load_image_file(image_path)
            results = pose.process(image)
            # 将角度信息存储到列表中
            if results.pose_landmarks is not None:
                angles = mp_pose.PoseLandmarkList(results.pose_landmarks).landmark
                angle_list = [angle for angle in angles]
                action_angles.append(angle_list)
    # 将动作名称和角度信息存储到字典中
    angles[action] = action_angles

# 将字典中的数据转换成csv格式,并存储到本地文件中
with open("angles.csv", mode="w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["action", "angles"])
    for action, action_angles in angles.items():
        for angle_list in action_angles:
            writer.writerow([action, angle_list])
``
mediapipe 根据不同文件夹的图片不同文件夹代表不同动作。生成人体骨骼角度对应动作的数据集scv的python代码的

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

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