Background-Remove / pages /2VideoBackground.py
Pranay009's picture
Added files
0dca4ae verified
Raw
History Blame Contribute Delete
2.28 kB
import streamlit as st
from PIL import Image
import sys
print(sys.executable)
from src.remover import BackgroundRemover
import cv2
from moviepy.editor import *
import os
def save_uploaded_file(uploaded_file,filename, save_dir="./static/video"):
file_path = os.path.join(save_dir, filename)
with open(file_path, "wb") as f:
f.write(uploaded_file.getbuffer())
return file_path
def process_video(input_path, output_path,background_path):
# Open the video file
video_capture = cv2.VideoCapture(input_path)
# Get video properties
images = []
fps = int(video_capture.get(cv2.CAP_PROP_FPS))
# Process each frame in the video
while True:
ret, frame = video_capture.read()
if not ret:
break
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
processed_frame = obj.process_video(frame,background_path)
images.append(processed_frame)
if cv2.waitKey(1) & 0xFF == ord('s'):
break
cv2.destroyAllWindows()
video_capture.release()
clip = ImageSequenceClip(images, fps =fps)
clip.write_videofile(output_path)
st.set_page_config(
page_title="Video Background Remover",
page_icon="👋",
)
if __name__ == "__main__":
obj = BackgroundRemover()
st.title("DEMO")
st.write("Upload an Video")
uploaded_file = st.file_uploader("Choose a file",type=["mp4", "avi", "mov"])
VIDEO_DIR = "./output"
if uploaded_file is not None:
# To read file as bytes:
bytes_data = uploaded_file.getvalue()
file_name = "upload.mp4"
OUT_PATH = os.path.join(VIDEO_DIR,"results.mp4")
BACKGROUND_PATH = os.path.join(os.getcwd(),"static/background/2.png")
col1, col2 = st.columns(2)
with col1:
st.video(data=uploaded_file)
video_path = save_uploaded_file(uploaded_file,file_name)
st.success(f"Video saved as {video_path}")
flag1 = 1
process_video(video_path,OUT_PATH,BACKGROUND_PATH)
flag2 = 1
with col2:
if flag1==1 and flag2==1:
st.video(data=OUT_PATH)
st.success(f"Removing Background")
else:
st.write("Failed to upload video")