从动作图片中提取骨骼角度并保存为CSV文件
从动作图片中提取骨骼角度并保存为 CSV 文件
该程序旨在从输入的动作图片文件夹中提取人体骨骼关键点,计算骨骼角度,并将角度信息保存为 CSV 文件。
功能
- 提取动作图片中的人体骨骼关键点
- 计算骨骼角度
- 将骨骼角度保存为 CSV 文件
算法流程
- 导入所需库:包括 Mediapipe、OpenCV (cv2) 和 Pandas 等库。
- 定义保存骨骼角度的函数:用于将角度列表保存为 CSV 文件。
- 初始化 Mediapipe:导入姿势检测和绘图库。
- 遍历动作文件夹:依次处理每个动作的图片。
- 读取图片:将图片转换为 RGB 格式。
- 处理图片:提取骨骼关键点。
- 计算骨骼角度:包括腿与右手的角度、左臀、左膝和左踝的角度、右臀、右膝和右踝的角度、右肩、右肘和右手腕的角度、左肩、左肘和左手腕的角度、左髋、左膝和左踝的角度、腰部、左髋和左肩的角度、右髋、右膝和右踝的角度、腰部、右髋和右肩的角度、鼻子、右肩和右手腕的角度。
- 将角度添加到角度列表中。
- 保存角度列表到 CSV 文件。
- 完成所有动作图片处理后,程序结束。
优化方向
- 异常处理机制:在处理某张图片时出现错误而中断程序。
- 封装骨骼角度计算函数:方便其他程序调用。
- 骨骼角度可视化:绘制骨骼关键点和角度的图表,更直观地展示动作的执行情况。
- 机器学习算法:例如神经网络,提高骨骼角度计算的准确性和稳定性。
- 多人姿态估计:支持同时处理多个人的动作。
代码示例
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 中的具体计算方法需要根据实际需求进行定义。
- 优化方向中的部分功能需要使用额外的库或算法实现。
原文地址: https://www.cveoy.top/t/topic/gQ25 著作权归作者所有。请勿转载和采集!