|
import cv2 |
|
import numpy as np |
|
import gradio as gr |
|
|
|
def remove_green_screen(video_file, bg_image): |
|
cap = cv2.VideoCapture(video_file) |
|
background = cv2.imread(bg_image) |
|
while True: |
|
ret, frame = cap.read() |
|
if not ret: |
|
break |
|
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) |
|
lower_green = np.array([35, 0, 0]) |
|
upper_green = np.array([90, 255, 255]) |
|
mask = cv2.inRange(hsv, lower_green, upper_green) |
|
mask_inv = cv2.bitwise_not(mask) |
|
fg = cv2.bitwise_and(frame, frame, mask=mask_inv) |
|
bg = cv2.bitwise_and(background, background, mask=mask) |
|
final = cv2.add(fg, bg) |
|
cv2.imshow("output", final) |
|
if cv2.waitKey(1) & 0xFF == ord("q"): |
|
break |
|
cap.release() |
|
cv2.destroyAllWindows() |
|
|
|
iface = gr.Interface(fn=remove_green_screen, inputs=["file", "image"], outputs=None, title="Green Screen Remover") |
|
iface.launch() |
|
|