MBG0903's picture
Update app.py
bad8d87 verified
Raw
History Blame Contribute Delete
2.94 kB
import gradio as gr
import numpy as np
from PIL import Image
from utils.preprocess import preprocess_image
from utils.fill_regions import fill_regions
from utils.sharpen import sharpen_image
from utils.validation import quality_report
from utils.image_io import save_png
from utils.image_io import save_bmp
##################################################
# MAIN AGENT PIPELINE
##################################################
def generate_design(image):
if image is None:
return None, None, None, None
# PIL -> numpy
img = np.array(image)
# Step 1 : Preprocess
binary = preprocess_image(img)
# Step 2 : Fill regions
filled = fill_regions(binary)
# Step 3 : Restore black boundaries
# filled = overlay_boundaries(
# filled,
# binary
#)
# Step 4 : Sharpen
final_image = sharpen_image(
filled
)
# Step 5 : Validation
report = quality_report(
binary,
final_image
)
report_text = (
f"Regions Detected : {report['regions']}\n"
f"Unfilled Pixels : {report['unfilled_pixels']}\n"
f"Quality Score : {report['quality_score']} %"
)
# Step 6 : Save files
png_file = save_png(
final_image
)
bmp_file = save_bmp(
final_image
)
return (
Image.fromarray(final_image),
report_text,
png_file,
bmp_file
)
##################################################
# EXAMPLES
##################################################
examples = []
##################################################
# UI
##################################################
with gr.Blocks(
title="Saree Design AI Agent"
) as demo:
gr.Markdown(
"""
# 🎨 Saree Design AI Agent
Convert Step2 loom design into Step3
designer-ready colour filled image.
Standard Colours:
- Black → Boundaries
- Red → Filled Regions
- White → Background
"""
)
with gr.Row():
input_image = gr.Image(
type="pil",
label="Step2 Image"
)
output_image = gr.Image(
label="Generated Step3"
)
with gr.Row():
report = gr.Textbox(
label="Quality Report",
lines=5
)
with gr.Row():
png_file = gr.File(
label="Download PNG"
)
bmp_file = gr.File(
label="Download BMP"
)
generate_btn = gr.Button(
"Generate Step3 Image"
)
generate_btn.click(
fn=generate_design,
inputs=input_image,
outputs=[
output_image,
report,
png_file,
bmp_file
]
)
if len(examples) > 0:
gr.Examples(
examples=examples,
inputs=input_image
)
if __name__ == "__main__":
demo.launch()