Spaces:
Sleeping
Sleeping
import gradio as gr | |
from PIL import Image | |
import numpy as np | |
import cv2 | |
# Fonction pour charger et afficher l'image | |
def load_image(image): | |
return image | |
# Fonction pour appliquer un négatif | |
def apply_negative(image): | |
img_np = np.array(image) | |
negative = 255 - img_np | |
return Image.fromarray(negative) | |
# Fonction pour binariser une image | |
def binarize_image(image, threshold): | |
img_np = np.array(image.convert('L')) # Convertir en niveaux de gris | |
_, binary = cv2.threshold(img_np, threshold, 255, cv2.THRESH_BINARY) | |
return Image.fromarray(binary) | |
# Interface Gradio | |
def image_processing(image, operation, threshold=128): | |
if operation == "Négatif": | |
return apply_negative(image) | |
elif operation == "Binarisation": | |
return binarize_image(image, threshold) | |
return image | |
# Interface Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("## Projet de Traitement d'Image") | |
with gr.Row(): | |
image_input = gr.Image(type="pil", label="Charger Image") | |
operation = gr.Radio(["Négatif", "Binarisation"], label="Opération à effectuer", value="Négatif") | |
threshold = gr.Slider(0, 255, 128, label="Seuil de binarisation", visible=False) | |
image_output = gr.Image(label="Image Modifiée") | |
def update_threshold(operation): | |
if operation == "Binarisation": | |
return gr.update(visible=True) | |
return gr.update(visible=False) | |
operation.change(update_threshold, inputs=operation, outputs=threshold) | |
submit_button = gr.Button("Appliquer") | |
submit_button.click(image_processing, inputs=[image_input, operation, threshold], outputs=image_output) | |
# Lancer l'application Gradio | |
demo.launch() | |