|
import gradio as gr |
|
import numpy as np |
|
from PIL import Image |
|
from rembg import remove, new_session |
|
|
|
|
|
session = new_session("u2net") |
|
bg_removal_kwargs = { |
|
"alpha_matting": False, |
|
"session": session, |
|
"only_mask": False, |
|
"post_process_mask": True |
|
} |
|
|
|
def remove_background(input_image): |
|
try: |
|
|
|
if isinstance(input_image, np.ndarray): |
|
img = Image.fromarray(input_image) |
|
elif isinstance(input_image, dict): |
|
img = Image.open(input_image["name"]) |
|
else: |
|
img = input_image |
|
|
|
|
|
result = remove(img, **bg_removal_kwargs) |
|
return result |
|
|
|
except Exception as e: |
|
print(f"Error: {str(e)}") |
|
return input_image |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("## 🖼️ Background Remover (No Cropping)") |
|
|
|
with gr.Row(): |
|
input_img = gr.Image( |
|
label="Original", |
|
type="pil", |
|
height=400 |
|
) |
|
output_img = gr.Image( |
|
label="Result", |
|
type="pil", |
|
height=400 |
|
) |
|
|
|
gr.Button("Remove Background").click( |
|
remove_background, |
|
inputs=input_img, |
|
outputs=output_img |
|
) |
|
|
|
demo.launch() |