CoolFace
Apppublic

HumanCenteredAI/olliedetection

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
pose_utils.py32 linesDownload Raw Back to root
1import mediapipe as mp2import cv23import numpy as np4 5mp_pose = mp.solutions.pose6 7def extract_pose_sequence(video_path, seq_len=32):8    cap = cv2.VideoCapture(video_path)9    pose = mp_pose.Pose(static_image_mode=False)10    seq = []11    while len(seq) < seq_len and cap.isOpened():12        ret, frame = cap.read()13        if not ret: break14        results = pose.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))15        if results.pose_landmarks:16            coords = [[lm.x, lm.y, lm.z] for lm in results.pose_landmarks.landmark]17            seq.append(np.array(coords).flatten())18    cap.release()19    pose.close()20    return np.pad(seq, ((0, seq_len - len(seq)), (0, 0)))[:seq_len]21def feedback_from_landmarks(landmarks):22    # Simple rule-based explanations23    if landmarks['hip_y'] - landmarks['foot_y'] < 0.15:24        return "Not jumping high enough"25    if landmarks['front_foot_slide'] < 0.05:26        return "No front foot slide"27    if landmarks['back_foot_pop'] < 0.05:28        return "Not popping the board"29    if landmarks['back_foot_lift'] < 0.1:30        return "Not lifting back foot"31    return "Looks good!"32