fecia commited on
Commit
05fae2b
1 Parent(s): e92d80a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -7
app.py CHANGED
@@ -4,7 +4,6 @@ import matplotlib.pyplot as plt
4
  from ultralytics import YOLO
5
  import gradio as gr
6
  from matplotlib.patches import Rectangle
7
- from matplotlib.legend import Legend
8
 
9
  # Cargar el modelo YOLO (asegúrate de que 'model.pt' esté en el mismo directorio)
10
  model = YOLO("model.pt")
@@ -20,7 +19,10 @@ def process_image(image):
20
  # Inicializar la lista para almacenar la información de las máscaras
21
  mask_info_list = []
22
 
23
- # Iterar sobre los resultados
 
 
 
24
  for result in results:
25
  # Verificar si se detectaron máscaras
26
  if result.masks is not None and len(result.masks.data) > 0:
@@ -62,9 +64,6 @@ def process_image(image):
62
  # Definir el mapa de colores
63
  colormap = plt.cm.get_cmap('viridis')
64
 
65
- # Crear una imagen en blanco para las máscaras
66
- mask_image = np.zeros_like(img, dtype=np.uint8)
67
-
68
  # Crear una matriz para rastrear qué máscara se asigna a cada píxel
69
  mask_indices = np.full((img.shape[0], img.shape[1]), -1, dtype=int)
70
 
@@ -105,10 +104,39 @@ def process_image(image):
105
  img_with_masks = img.copy()
106
  print("No se detectaron máscaras en esta imagen.")
107
 
108
- # Convertir la imagen de BGR a RGB para mostrarla con Gradio
 
109
  img_with_masks_rgb = cv2.cvtColor(img_with_masks, cv2.COLOR_BGR2RGB)
110
 
111
- return img_with_masks_rgb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
  # Crear la interfaz de Gradio
114
  iface = gr.Interface(
 
4
  from ultralytics import YOLO
5
  import gradio as gr
6
  from matplotlib.patches import Rectangle
 
7
 
8
  # Cargar el modelo YOLO (asegúrate de que 'model.pt' esté en el mismo directorio)
9
  model = YOLO("model.pt")
 
19
  # Inicializar la lista para almacenar la información de las máscaras
20
  mask_info_list = []
21
 
22
+ # Crear una imagen en blanco para las máscaras
23
+ mask_image = np.zeros_like(img, dtype=np.uint8)
24
+
25
+ # Procesar resultados
26
  for result in results:
27
  # Verificar si se detectaron máscaras
28
  if result.masks is not None and len(result.masks.data) > 0:
 
64
  # Definir el mapa de colores
65
  colormap = plt.cm.get_cmap('viridis')
66
 
 
 
 
67
  # Crear una matriz para rastrear qué máscara se asigna a cada píxel
68
  mask_indices = np.full((img.shape[0], img.shape[1]), -1, dtype=int)
69
 
 
104
  img_with_masks = img.copy()
105
  print("No se detectaron máscaras en esta imagen.")
106
 
107
+ # Convertir las imágenes de BGR a RGB para matplotlib
108
+ img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
109
  img_with_masks_rgb = cv2.cvtColor(img_with_masks, cv2.COLOR_BGR2RGB)
110
 
111
+ # Crear una figura de matplotlib
112
+ fig, ax = plt.subplots(figsize=(8, 8))
113
+ ax.imshow(img_with_masks_rgb)
114
+ ax.axis('off')
115
+
116
+ # Crear la leyenda si hay máscaras detectadas
117
+ if mask_info_list:
118
+ from matplotlib.patches import Patch
119
+ handles = []
120
+ labels = []
121
+ for mask_info in mask_info_list:
122
+ color_rgb = mask_info['color_rgb']
123
+ color_normalized = np.array(color_rgb) / 255
124
+ patch = Patch(facecolor=color_normalized)
125
+ label = f"{mask_info['class']}: {mask_info['confidence']:.2f}"
126
+ handles.append(patch)
127
+ labels.append(label)
128
+
129
+ # Añadir la leyenda al gráfico
130
+ ax.legend(handles, labels, loc='upper right')
131
+
132
+ # Convertir la figura de matplotlib a una imagen que pueda ser mostrada en Gradio
133
+ fig.canvas.draw()
134
+ img_figure = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)
135
+ img_figure = img_figure.reshape(fig.canvas.get_width_height()[::-1] + (3,))
136
+
137
+ plt.close(fig) # Cerrar la figura para liberar memoria
138
+
139
+ return img_figure
140
 
141
  # Crear la interfaz de Gradio
142
  iface = gr.Interface(