File size: 1,895 Bytes
501f3fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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.inputs.Image(label="Upload Image"),  # Utilisation de l'entrée d'image par défaut
    gr.inputs.Slider(minimum=1, maximum=10, default=1, label="Edges Scale")
]

output = gr.outputs.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()