PhotographerAlpha7's picture
Update app.py
66df43d verified
import cv2
import numpy as np
import gradio as gr
def create_edge_map(image, scale_value):
# Convertir l'image en niveaux de gris si ce n'est pas déjà le cas
if len(image.shape) > 2 and image.shape[2] == 3:
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
else:
gray = image # L'image est déjà en niveaux de gris
# Appliquer un flou gaussien pour réduire le bruit
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# Calculer le gradient horizontal
gradient_x = cv2.Sobel(blurred, cv2.CV_64F, 1, 0, ksize=5)
# Calculer le gradient vertical
gradient_y = cv2.Sobel(blurred, cv2.CV_64F, 0, 1, ksize=5)
# Calculer la magnitude du gradient
magnitude = np.sqrt(gradient_x**2 + gradient_y**2)
# Normaliser la magnitude pour une meilleure visualisation
edge_map = cv2.normalize(magnitude, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
# Ajouter un ajustement basé sur le paramètre scale_value
edge_map = cv2.addWeighted(edge_map, scale_value, np.zeros_like(edge_map), 0, 0)
return edge_map
# Fonction Gradio pour générer la carte de profondeur
def edge_map_function(image, scale_value):
# Convertir l'image PIL en numpy array
image_np = np.array(image)
# Générer la carte de profondeur
edge_map = create_edge_map(image_np, scale_value)
# Retourner l'image résultante
return edge_map
# Créer une interface Gradio pour tester la fonction edge_map_function
inputs = [
gr.Image(label="Upload Image"), # Utilisation de l'entrée d'image par défaut
gr.Slider(minimum=1, maximum=5, label="Edges Scale")
]
output = gr.Image(label="Edges Map") # Utilisation de la sortie d'image par défaut
# Créer une interface Gradio
gr.Interface(fn=edge_map_function, inputs=inputs, outputs=output, title="Edges Generator").launch()