zaghamrasool's picture
Update app.py
1088ada verified
raw
history blame
2.86 kB
import os
import cv2
import gradio as gr
import numpy as np
import random
MAX_SEED = 999999
example_path = os.path.join(os.path.dirname(__file__), 'assets')
# Load example images
garm_list = os.listdir(os.path.join(example_path, "cloth"))
garm_list_path = [os.path.join(example_path, "cloth", garm) for garm in garm_list]
human_list = os.listdir(os.path.join(example_path, "human"))
human_list_path = [os.path.join(example_path, "human", human) for human in human_list]
def mock_tryon(person_img, garment_img, seed, randomize_seed):
if person_img is None or garment_img is None:
gr.Warning("Please upload both images!")
return None, None, "Error: Empty image"
if randomize_seed:
seed = random.randint(0, MAX_SEED)
# Simple mock processing
try:
# Convert person to grayscale
person_gray = cv2.cvtColor(person_img, cv2.COLOR_RGB2GRAY)
person_gray = cv2.cvtColor(person_gray, cv2.COLOR_GRAY2RGB)
# Resize garment
garment_resized = cv2.resize(garment_img, (person_img.shape[1], person_img.shape[0]))
# Blend images
result = cv2.addWeighted(person_gray, 0.3, garment_resized, 0.7, 0)
return result, seed, "Mock try-on complete"
except Exception as e:
gr.Error(f"Processing error: {str(e)}")
return None, seed, f"Error: {str(e)}"
css = """
#col-left, #col-mid, #col-right { margin: 0 auto; max-width: 430px; }
#col-showcase { margin: 0 auto; max-width: 1100px; }
#button { color: blue; }
"""
with gr.Blocks(css=css) as app:
gr.Markdown("# Virtual Try-On Demo (Mock)")
with gr.Row():
with gr.Column(elem_id="col-left"):
gr.Markdown("### Step 1: Upload Person Image")
person_img = gr.Image(label="Person", type="numpy")
gr.Examples(examples=human_list_path, inputs=person_img)
with gr.Column(elem_id="col-mid"):
gr.Markdown("### Step 2: Upload Garment")
garment_img = gr.Image(label="Garment", type="numpy")
gr.Examples(examples=garm_list_path, inputs=garment_img)
with gr.Column(elem_id="col-right"):
gr.Markdown("### Step 3: Get Result")
output_img = gr.Image(label="Result")
with gr.Row():
seed = gr.Slider(0, MAX_SEED, label="Seed", value=0)
random_seed = gr.Checkbox(label="Random Seed", value=True)
with gr.Row():
seed_used = gr.Number(label="Seed Used")
status = gr.Textbox(label="Status")
run_btn = gr.Button("Run", variant="primary")
run_btn.click(
fn=mock_tryon,
inputs=[person_img, garment_img, seed, random_seed],
outputs=[output_img, seed_used, status]
)
app.launch(share=True) # Critical fix: Added share=True