DHEIVER commited on
Commit
b7ade3b
·
verified ·
1 Parent(s): 5055fce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -16
app.py CHANGED
@@ -30,19 +30,23 @@ def download_sam_model():
30
  progress_bar.update(size)
31
  return model_path
32
 
33
- def show_mask(mask, image, random_color=True):
34
  """Aplica uma máscara colorida sobre a imagem"""
35
- if random_color:
36
- color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0)
37
- else:
38
- color = np.array([30/255, 144/255, 255/255, 0.6])
39
  h, w = mask.shape[-2:]
40
  mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1)
41
 
42
- img_rgba = cv2.cvtColor(image, cv2.COLOR_RGB2RGBA)
 
 
 
 
 
43
  mask_image_uint8 = (mask_image * 255).astype(np.uint8)
44
 
45
- # Mistura a máscara com a imagem original
46
  return cv2.addWeighted(img_rgba, 0.7, mask_image_uint8, 0.3, 0)
47
 
48
  def load_sam_model():
@@ -96,24 +100,25 @@ def segment_teeth(image, predictor):
96
 
97
  # Gerar pontos para segmentação
98
  input_points = generate_grid_points(image)
99
- input_labels = np.ones(len(input_points)) # 1 para todos os pontos
100
 
101
- # Gerar máscaras
102
  masks, scores, logits = predictor.predict(
103
  point_coords=input_points,
104
  point_labels=input_labels,
105
- multimask_output=True,
106
- num_multimask_outputs=3
107
  )
108
 
109
  # Criar visualização da segmentação
110
  final_image = image.copy()
111
- for i, mask in enumerate(masks):
 
 
112
  final_image = show_mask(mask, final_image)
113
-
114
- # Desenhar pontos de entrada
115
- for point in input_points:
116
- cv2.circle(final_image, (int(point[0]), int(point[1])), 3, (255, 0, 0), -1)
117
 
118
  return final_image, masks
119
 
@@ -159,6 +164,9 @@ Observações:
159
  return result, analysis
160
 
161
  except Exception as e:
 
 
 
162
  return None, f"Erro durante o processamento: {str(e)}"
163
 
164
  # Create Gradio interface
 
30
  progress_bar.update(size)
31
  return model_path
32
 
33
+ def show_mask(mask, image):
34
  """Aplica uma máscara colorida sobre a imagem"""
35
+ # Gerar cor aleatória para a máscara
36
+ color = np.concatenate([np.random.random(3), np.array([0.6])], axis=0)
37
+
 
38
  h, w = mask.shape[-2:]
39
  mask_image = mask.reshape(h, w, 1) * color.reshape(1, 1, -1)
40
 
41
+ # Converter imagem para RGBA se necessário
42
+ if image.shape[-1] == 3:
43
+ img_rgba = cv2.cvtColor(image, cv2.COLOR_RGB2RGBA)
44
+ else:
45
+ img_rgba = image
46
+
47
  mask_image_uint8 = (mask_image * 255).astype(np.uint8)
48
 
49
+ # Misturar a máscara com a imagem original
50
  return cv2.addWeighted(img_rgba, 0.7, mask_image_uint8, 0.3, 0)
51
 
52
  def load_sam_model():
 
100
 
101
  # Gerar pontos para segmentação
102
  input_points = generate_grid_points(image)
103
+ input_labels = np.ones(len(input_points))
104
 
105
+ # Gerar máscaras usando os parâmetros corretos
106
  masks, scores, logits = predictor.predict(
107
  point_coords=input_points,
108
  point_labels=input_labels,
109
+ multimask_output=True # Isso permitirá múltiplas máscaras por ponto
 
110
  )
111
 
112
  # Criar visualização da segmentação
113
  final_image = image.copy()
114
+
115
+ # Aplicar cada máscara com uma cor diferente
116
+ for mask in masks:
117
  final_image = show_mask(mask, final_image)
118
+
119
+ # Desenhar os pontos de referência
120
+ for point in input_points:
121
+ cv2.circle(final_image, (int(point[0]), int(point[1])), 3, (255, 0, 0), -1)
122
 
123
  return final_image, masks
124
 
 
164
  return result, analysis
165
 
166
  except Exception as e:
167
+ import traceback
168
+ error_trace = traceback.format_exc()
169
+ print(error_trace) # Isso ajudará na depuração
170
  return None, f"Erro durante o processamento: {str(e)}"
171
 
172
  # Create Gradio interface