import cv2 import mediapipe as mp import gradio as gr mp_drawing = mp.solutions.drawing_utils mp_pose = mp.solutions.pose def detect_pose(frame): with mp_pose.Pose(min_detection_confidence=0.5, min_tracking_confidence=0.5) as pose: results = pose.process(frame) if results.pose_landmarks: mp_drawing.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS, landmark_drawing_spec=mp_drawing.DrawingSpec(color=(0, 0, 255), thickness=2, circle_radius=4), connection_drawing_spec=mp_drawing.DrawingSpec(color=(0, 255, 0), thickness=2)) return frame def process_video(frame): frame = detect_pose(frame) return frame def video_stream(): cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) frame = process_video(frame) frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR) yield frame iface = gr.Interface( fn=lambda x: x, inputs=gr.Video(source="webcam", type="numpy"), outputs="video", live=True, title="Live Pose Detection" ) iface.launch()