amirgame197 commited on
Commit
90ab22e
·
verified ·
1 Parent(s): e7b81e8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -20
app.py CHANGED
@@ -12,33 +12,41 @@ remover = Remover()
12
  def doo(video):
13
  cap = cv2.VideoCapture(video)
14
  fps = cap.get(cv2.CAP_PROP_FPS)
15
- frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
16
- frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
17
- total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
18
 
19
- writer = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, (frame_width, frame_height))
20
-
21
- batch_size = 30 # Process 30 frames at a time
22
 
23
  while cap.isOpened():
24
- frames = []
25
- for _ in range(batch_size):
26
- ret, frame = cap.read()
27
- if ret is False:
28
- break
29
- frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
30
- img = Image.fromarray(frame).convert('RGB')
31
- out = remover.process(img, type='green')
32
- frames.append(cv2.cvtColor(np.array(out), cv2.COLOR_BGR2RGB))
33
-
34
- if not frames:
35
  break
36
 
37
- for frame in frames:
38
- writer.write(frame)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  cap.release()
41
- writer.release()
 
42
  return 'output.mp4'
43
 
44
  iface = gr.Interface(fn=doo, inputs="video", outputs="video")
 
12
  def doo(video):
13
  cap = cv2.VideoCapture(video)
14
  fps = cap.get(cv2.CAP_PROP_FPS)
 
 
 
15
 
16
+ writer = None
17
+ frame_count = 0
18
+ max_frames = 400 # Maximum number of frames to process at a time
19
 
20
  while cap.isOpened():
21
+ ret, frame = cap.read()
22
+
23
+ if ret is False:
 
 
 
 
 
 
 
 
24
  break
25
 
26
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
27
+ img = Image.fromarray(frame).convert('RGB')
28
+
29
+ if writer is None:
30
+ writer = cv2.VideoWriter('output.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, img.size)
31
+
32
+ out = remover.process(img, type='green')
33
+ writer.write(cv2.cvtColor(np.array(out), cv2.COLOR_BGR2RGB))
34
+
35
+ frame_count += 1
36
+ if frame_count >= max_frames:
37
+ cap.release()
38
+ writer.release()
39
+
40
+ # Process the next segment
41
+ cap = cv2.VideoCapture(video)
42
+ for _ in range(frame_count):
43
+ cap.read() # Skip frames that have already been processed
44
+ writer = None
45
+ frame_count = 0
46
 
47
  cap.release()
48
+ if writer is not None:
49
+ writer.release()
50
  return 'output.mp4'
51
 
52
  iface = gr.Interface(fn=doo, inputs="video", outputs="video")