mediapipe 根据不同文件夹的图片不同文件夹代表不同动作。生成人体骨骼角度对应动作的数据集scv的python代码的
实现思路:
-
遍历不同文件夹中的图片,使用mediapipe库获取每张图片中人体骨骼的角度信息。
-
将每张图片中的角度信息与对应的动作标签存储到一个字典中。
-
将字典中的数据转换成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])
``
原文地址: https://www.cveoy.top/t/topic/d7qw 著作权归作者所有。请勿转载和采集!