File size: 1,337 Bytes
7315d60 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import cv2
import mediapipe as mp
import streamlit as st
from PIL import Image
import numpy as np
# Initialize MediaPipe Pose
mp_pose = mp.solutions.pose
pose = mp_pose.Pose()
mp_drawing = mp.solutions.drawing_utils
def process_frame(frame):
# Convert the frame to RGB
image_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
results = pose.process(image_rgb)
if results.pose_landmarks:
# Draw the pose annotations on the image
mp_drawing.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
return frame
def main():
st.title("Live Pose Detection")
st.write("This app uses MediaPipe for real-time pose detection.")
# Create a placeholder for the video stream
stframe = st.empty()
# Open the webcam
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if not ret:
st.write("Error: Could not read frame.")
break
# Process the frame
frame = process_frame(frame)
# Convert the frame to RGB format
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# Convert to PIL Image and display
stframe.image(Image.fromarray(frame_rgb), channels='RGB', use_column_width=True)
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main() |