Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -7,6 +7,7 @@ import math
|
|
| 7 |
from tensorflow.keras.models import Model
|
| 8 |
from tensorflow.keras.layers import (LSTM, Dense, Dropout, Input, Flatten,
|
| 9 |
Bidirectional, Permute, multiply)
|
|
|
|
| 10 |
|
| 11 |
# Load the pose estimation model from Mediapipe
|
| 12 |
mp_pose = mp.solutions.pose
|
|
@@ -69,10 +70,7 @@ class VideoProcessor:
|
|
| 69 |
temp_file.write(video_file.read())
|
| 70 |
# Now we can open the video file using cv2.VideoCapture()
|
| 71 |
cap = cv2.VideoCapture(filename)
|
| 72 |
-
|
| 73 |
-
frame_width = int(cap.get(3))
|
| 74 |
-
frame_height = int(cap.get(4))
|
| 75 |
-
out = cv2.VideoWriter(output_filename, cv2.VideoWriter_fourcc(*'mp4v'), 30, (frame_width,frame_height))
|
| 76 |
while cap.isOpened():
|
| 77 |
ret, frame = cap.read()
|
| 78 |
if not ret:
|
|
@@ -80,13 +78,11 @@ class VideoProcessor:
|
|
| 80 |
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
| 81 |
results = self.pose.process(frame_rgb)
|
| 82 |
processed_frame = self.process_frame(frame, results)
|
| 83 |
-
|
| 84 |
cap.release()
|
| 85 |
-
out.release()
|
| 86 |
# Remove the temporary file
|
| 87 |
os.remove(filename)
|
| 88 |
-
|
| 89 |
-
return output_filename
|
| 90 |
|
| 91 |
def process_frame(self, frame, results):
|
| 92 |
# Process the frame using the `process` function
|
|
@@ -269,8 +265,14 @@ def main():
|
|
| 269 |
video_file = st.file_uploader("Upload a video file", type=["mp4", "avi"])
|
| 270 |
if video_file is not None:
|
| 271 |
video_processor = VideoProcessor()
|
| 272 |
-
|
| 273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 274 |
|
| 275 |
if __name__ == "__main__":
|
| 276 |
main()
|
|
|
|
| 7 |
from tensorflow.keras.models import Model
|
| 8 |
from tensorflow.keras.layers import (LSTM, Dense, Dropout, Input, Flatten,
|
| 9 |
Bidirectional, Permute, multiply)
|
| 10 |
+
from moviepy.editor import VideoClip
|
| 11 |
|
| 12 |
# Load the pose estimation model from Mediapipe
|
| 13 |
mp_pose = mp.solutions.pose
|
|
|
|
| 70 |
temp_file.write(video_file.read())
|
| 71 |
# Now we can open the video file using cv2.VideoCapture()
|
| 72 |
cap = cv2.VideoCapture(filename)
|
| 73 |
+
frames = []
|
|
|
|
|
|
|
|
|
|
| 74 |
while cap.isOpened():
|
| 75 |
ret, frame = cap.read()
|
| 76 |
if not ret:
|
|
|
|
| 78 |
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
|
| 79 |
results = self.pose.process(frame_rgb)
|
| 80 |
processed_frame = self.process_frame(frame, results)
|
| 81 |
+
frames.append(processed_frame)
|
| 82 |
cap.release()
|
|
|
|
| 83 |
# Remove the temporary file
|
| 84 |
os.remove(filename)
|
| 85 |
+
return frames
|
|
|
|
| 86 |
|
| 87 |
def process_frame(self, frame, results):
|
| 88 |
# Process the frame using the `process` function
|
|
|
|
| 265 |
video_file = st.file_uploader("Upload a video file", type=["mp4", "avi"])
|
| 266 |
if video_file is not None:
|
| 267 |
video_processor = VideoProcessor()
|
| 268 |
+
frames = video_processor.process_video(video_file)
|
| 269 |
+
|
| 270 |
+
def make_frame(t):
|
| 271 |
+
frame_index = int(t * 30) # Assuming 30 frames per second
|
| 272 |
+
return frames[frame_index]
|
| 273 |
+
|
| 274 |
+
video = VideoClip(make_frame, duration=len(frames) / 30)
|
| 275 |
+
st.video(video)
|
| 276 |
|
| 277 |
if __name__ == "__main__":
|
| 278 |
main()
|