rohitashva commited on
Commit
5a45411
·
verified ·
1 Parent(s): b884dde

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -0
app.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import cv2
3
+ import joblib
4
+ import mediapipe as mp
5
+ import numpy as np
6
+ from streamlit_webrtc import webrtc_streamer, VideoTransformerBase
7
+
8
+ # Load the trained model and label encoder
9
+ model = joblib.load("pose_classifier.joblib")
10
+ label_encoder = joblib.load("label_encoder.joblib")
11
+
12
+ # Initialize MediaPipe Pose
13
+ mp_pose = mp.solutions.pose
14
+ pose = mp_pose.Pose()
15
+
16
+ class PoseTransformer(VideoTransformerBase):
17
+ def transform(self, frame):
18
+ img = frame.to_ndarray(format="bgr24") # Convert to BGR format
19
+ img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
20
+
21
+ # Process frame with MediaPipe Pose
22
+ results = pose.process(img_rgb)
23
+
24
+ if results.pose_landmarks:
25
+ landmarks = results.pose_landmarks.landmark
26
+ pose_data = [j.x for j in landmarks] + [j.y for j in landmarks] + \
27
+ [j.z for j in landmarks] + [j.visibility for j in landmarks]
28
+
29
+ pose_data = np.array(pose_data).reshape(1, -1)
30
+
31
+ # Predict pose
32
+ y_pred = model.predict(pose_data)
33
+ predicted_label = label_encoder.inverse_transform(y_pred)[0]
34
+
35
+ # Display predicted label
36
+ cv2.putText(img, f"Pose: {predicted_label}", (20, 50),
37
+ cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 3)
38
+
39
+ return cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
40
+
41
+ # Streamlit UI
42
+ st.title("Live Pose Classification")
43
+ st.write("This application detects human poses in real-time.")
44
+
45
+ # Start WebRTC Stream
46
+ webrtc_streamer(key="pose-detection", video_transformer_factory=PoseTransformer)