om-app commited on
Commit
2911157
·
1 Parent(s): f0a577c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -12
app.py CHANGED
@@ -4,24 +4,36 @@ import gradio as gr
4
 
5
  def remove_green_screen(video_file, bg_image):
6
  cap = cv2.VideoCapture(video_file)
7
- background = cv2.imread(bg_image)
 
8
  while True:
9
  ret, frame = cap.read()
10
  if not ret:
11
  break
12
  hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
13
- lower_green = np.array([35, 0, 0])
14
  upper_green = np.array([90, 255, 255])
15
  mask = cv2.inRange(hsv, lower_green, upper_green)
16
- mask_inv = cv2.bitwise_not(mask)
17
- fg = cv2.bitwise_and(frame, frame, mask=mask_inv)
18
- bg = cv2.bitwise_and(background, background, mask=mask)
19
- final = cv2.add(fg, bg)
20
- cv2.imshow("output", final)
21
- if cv2.waitKey(1) & 0xFF == ord("q"):
22
- break
23
  cap.release()
24
- cv2.destroyAllWindows()
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
- iface = gr.Interface(fn=remove_green_screen, inputs=["file", "image"], outputs=None, title="Green Screen Remover")
27
- iface.launch()
 
4
 
5
  def remove_green_screen(video_file, bg_image):
6
  cap = cv2.VideoCapture(video_file)
7
+ bg = cv2.imread(bg_image)
8
+ img_array = []
9
  while True:
10
  ret, frame = cap.read()
11
  if not ret:
12
  break
13
  hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
14
+ lower_green = np.array([30, 60, 60])
15
  upper_green = np.array([90, 255, 255])
16
  mask = cv2.inRange(hsv, lower_green, upper_green)
17
+ mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3),np.uint8))
18
+ mask = cv2.dilate(mask, np.ones((3,3),np.uint8), iterations=5)
19
+ mask = cv2.blur(mask, (30,30))
20
+ mask = np.stack([mask, mask, mask], axis=2)
21
+ frame = np.where(mask == np.array([255, 255, 255]), bg, frame)
22
+ img_array.append(frame)
 
23
  cap.release()
24
+ output_file = "output.mp4"
25
+ fourcc = cv2.VideoWriter_fourcc(*"mp4v")
26
+ fps = 30.0
27
+ height, width, layers = img_array[0].shape
28
+ size = (width,height)
29
+ out = cv2.VideoWriter(output_file, fourcc, fps, size)
30
+ for i in range(len(img_array)):
31
+ out.write(img_array[i])
32
+ out.release()
33
+ return output_file
34
+
35
+ input_video = gr.inputs.Video(type="mp4")
36
+ input_bg = gr.inputs.Image(label="Background Image")
37
+ output_video = gr.outputs.Video(type="mp4")
38
 
39
+ gr.Interface(fn=remove_green_screen, inputs=[input_video, input_bg], outputs=output_video, title="Green Screen Remover").launch()