使用 Mediapipe 从图片生成人体骨骼角度数据集

本教程介绍如何使用 Mediapipe Python 库从图片生成人体骨骼角度数据集。数据集将包含不同动作的骨骼角度信息,可用于训练机器学习模型进行动作识别。

**代码:**pythonimport mediapipe as mpimport cv2import osimport csv

定义动作列表actions = ['wave', 'fist', 'palm', 'thumb']

初始化 Mediapipemp_drawing = mp.solutions.drawing_utilsmp_pose = mp.solutions.pose

初始化 CSV 文件with open('data.csv', mode='w', newline='') as f: csv_writer = csv.writer(f, delimiter=',', quotechar=''', quoting=csv.QUOTE_MINIMAL) csv_writer.writerow(['Action'] + [f'X{i+1}' for i in range(33)] + [f'Y{i+1}' for i in range(33)] + [f'Z{i+1}' for i in range(33)] + [f'Angle{i+1}' for i in range(len(mp_pose.POSE_CONNECTIONS))])

遍历每个动作文件夹for action in actions: for filename in os.listdir(f'./{action}'): if filename.endswith('.jpg'): # 读取图片 image = cv2.imread(f'./{action}/{filename}') # 转换为 RGB 格式 image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

        # 初始化 Mediapipe pose 模型            with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose:                # 将图片输入模型,获取关键点                results = pose.process(image)

            # 获取关键点坐标                landmarks = results.pose_landmarks.landmark

            # 将关键点坐标转换为列表                landmarks_list = [landmark.x for landmark in landmarks] + [landmark.y for landmark in landmarks] + [landmark.z for landmark in landmarks]

            # 计算骨骼角度                angles = []                # 以鼻子为起始点                nose = landmarks[mp_pose.PoseLandmark.NOSE.value]                for connection in mp_pose.POSE_CONNECTIONS:                    angle = mp_pose.calc_angle(nose, landmarks[connection[0]], landmarks[connection[1]])                    angles.append(angle)

            # 将动作名称和关键点坐标、骨骼角度写入 CSV 文件                with open('data.csv', mode='a', newline='') as f:                    csv_writer = csv.writer(f, delimiter=',', quotechar=''', quoting=csv.QUOTE_MINIMAL)                    csv_writer.writerow([action] + landmarks_list + angles)

代码说明:

  1. 导入必要的库: 包括 mediapipe, cv2, os, 和 csv。2. 定义动作列表: actions 列表包含所有要识别的动作。3. 初始化 Mediapipe: 初始化 mp_drawingmp_pose 对象。4. 初始化 CSV 文件: 创建名为 'data.csv' 的文件,并写入表头。5. 遍历每个动作文件夹: * 读取文件夹中的所有图片。 * 使用 Mediapipe pose 模型检测人体关键点。 * 计算以鼻子为基准点的骨骼角度。 * 将动作名称、关键点坐标和骨骼角度写入 CSV 文件。

**最终生成的 'data.csv' 文件可以用于训练机器学习模型进行动作识别。

Mediapipe 多动作人体姿态识别:生成骨骼角度数据集

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

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