import requests from PIL import Image import gradio as gr from segmentation import segment_image from classification import get_segments_for_garment def process_url(url, selected_classes, show_original, show_segmentation, show_overlay, fixed_size=(400, 400)): """Process an image from a URL""" try: image = Image.open(requests.get(url, stream=True).raw) return segment_image(image, selected_classes, show_original, show_segmentation, show_overlay, fixed_size) except Exception as e: return [gr.update(value=None)] * 4, f"Error: {str(e)}" def process_person_and_garment(person_image, garment_image, show_original, show_segmentation, show_overlay, fixed_size=(400, 400)): """Process person and garment images for targeted segmentation""" if person_image is None or garment_image is None: return [gr.update(value=None)] * 4, "Please provide both person and garment images" try: # Get segments that should be included based on the garment selected_class, segformer_idx, result_text = get_segments_for_garment(garment_image) if selected_class is None: return [gr.update(value=None)] * 4, result_text # Process the person image with the selected garment classes result_images = segment_image(person_image, selected_class, show_original, show_segmentation, show_overlay, fixed_size) return result_images, result_text except Exception as e: return [gr.update(value=None)] * 4, f"Error: {str(e)}"