YogaBuddy / utils /generate_keypoints_csv.py
dilkushsingh's picture
Upload 45 files
b9f54a3 verified
Raw
History Blame Contribute Delete
1.59 kB
import cv2
import numpy as np
import mediapipe as mp
import pandas as pd
import os
mp_pose = mp.solutions.pose
pose = mp_pose.Pose(static_image_mode=True, min_detection_confidence=0.3, model_complexity=2)
mp_drawing = mp.solutions.drawing_utils
path = 'data/sun_salutation_poses/test/'
points = mp_pose.PoseLandmark
columns = [f"{mp_pose.PoseLandmark(point).name}_{axis}" for point in points for axis in ["x", "y", "z", "vis"]]
columns.append('class')
data = pd.DataFrame(columns=columns)
count = 0
for dir_name in os.listdir(path):
label_dir = os.path.join(path, dir_name)
class_label = dir_name
if not os.path.isdir(label_dir):
continue
for img_name in os.listdir(label_dir):
img_path = os.path.join(label_dir, img_name)
if not (img_name.endswith('.jpg') or img_name.endswith('.jpeg') or img_name.endswith('.png')):
continue
try:
img = cv2.imread(img_path)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = pose.process(img_rgb)
if results.pose_landmarks:
landmarks = results.pose_landmarks.landmark
row = []
for landmark in landmarks:
row.extend([landmark.x, landmark.y, landmark.z, landmark.visibility])
row.append(class_label)
data.loc[count] = row
count += 1
except Exception as e:
print(f"Error processing image {img_name} in {dir_name}: {e}")
continue
data.to_csv('data/test.csv', index=False)