Mar2Ding commited on
Commit
9ab77fe
·
verified ·
1 Parent(s): 45e8794

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -4
app.py CHANGED
@@ -38,6 +38,15 @@ from sam2.build_sam import build_sam2_video_predictor
38
 
39
  from moviepy.editor import ImageSequenceClip
40
 
 
 
 
 
 
 
 
 
 
41
  def get_video_fps(video_path):
42
  # Open the video file
43
  cap = cv2.VideoCapture(video_path)
@@ -401,9 +410,9 @@ def propagate_to_all(video_in, checkpoint, stored_inference_state, stored_frame_
401
  elif vis_frame_type == "render":
402
  # Create a video clip from the image sequence
403
  original_fps = get_video_fps(video_in)
404
- fps = original_fps # Frames per second
405
- total_frames = len(jpeg_images)
406
- clip = ImageSequenceClip(jpeg_images, fps=fps)
407
  # Write the result to a file
408
  final_vid_output_path = "output_video.mp4"
409
 
@@ -521,7 +530,10 @@ with gr.Blocks(css=css) as demo:
521
  with gr.Group():
522
  with gr.Row():
523
  vis_frame_type = gr.Radio(label="Propagation level", choices=["check", "render"], value="check", scale=2)
524
- propagate_btn = gr.Button("Propagate", scale=2)
 
 
 
525
  reset_prpgt_brn = gr.Button("Reset", visible=False)
526
  output_propagated = gr.Gallery(label="Propagated Mask samples gallery", columns=4, visible=False)
527
  output_video = gr.Video(visible=False)
 
38
 
39
  from moviepy.editor import ImageSequenceClip
40
 
41
+ def sparse_sampling(jpeg_images, original_fps, target_fps=5):
42
+ # Calculate the frame interval for sampling based on the target fps
43
+ frame_interval = int(original_fps // target_fps)
44
+
45
+ # Sparse sample the jpeg_images by selecting every 'frame_interval' frame
46
+ sampled_images = [jpeg_images[i] for i in range(0, len(jpeg_images), frame_interval)]
47
+
48
+ return sampled_images
49
+
50
  def get_video_fps(video_path):
51
  # Open the video file
52
  cap = cv2.VideoCapture(video_path)
 
410
  elif vis_frame_type == "render":
411
  # Create a video clip from the image sequence
412
  original_fps = get_video_fps(video_in)
413
+ sampled_images = sparse_sampling(jpeg_images, original_fps, target_fps=6)
414
+ clip = ImageSequenceClip(sampled_images, fps=6)
415
+ # clip = ImageSequenceClip(jpeg_images, fps=fps)
416
  # Write the result to a file
417
  final_vid_output_path = "output_video.mp4"
418
 
 
530
  with gr.Group():
531
  with gr.Row():
532
  vis_frame_type = gr.Radio(label="Propagation level", choices=["check", "render"], value="check", scale=2)
533
+ # Use gr.Column to center the button vertically
534
+ with gr.Column():
535
+ propagate_btn = gr.Button("Propagate", scale=2)
536
+
537
  reset_prpgt_brn = gr.Button("Reset", visible=False)
538
  output_propagated = gr.Gallery(label="Propagated Mask samples gallery", columns=4, visible=False)
539
  output_video = gr.Video(visible=False)