DHEIVER commited on
Commit
3cf72b4
1 Parent(s): a900d50

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -12
app.py CHANGED
@@ -90,24 +90,58 @@ import numpy as np
90
  import cv2
91
  from sklearn.cluster import KMeans
92
 
93
- def processar_imagem_de_entrada_wrapper(img, modelo, salvar_resultado=False):
94
- model = models[modelo]
95
- resultado, img_out = processar_imagem_de_entrada(img, model)
96
 
97
- # Extração de características dos clusters
 
 
 
 
 
98
  kmeans = KMeans(n_clusters=2, random_state=0)
99
- kmeans.fit(img_out[:, :, 0].reshape((-1, 1)))
 
100
  labels = kmeans.labels_
101
  cluster_centers = kmeans.cluster_centers_
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
 
103
- # Detecção de doença
104
- has_disease = any(cluster_centers[i][0] < 0.3 for i in range(2))
105
-
106
- # Resultado
107
- status_doenca = "Sim" if has_disease else "Não"
108
- explanation = "A máquina detectou uma possível doença nos vasos sanguíneos." if has_disease else "A máquina não detectou nenhuma doença nos vasos sanguíneos."
109
 
110
- return resultado, img_out, status_doenca, explanation
111
 
112
  # Inicializar a contagem de análises
113
  num_analises = 0
 
90
  import cv2
91
  from sklearn.cluster import KMeans
92
 
93
+ # ...
 
 
94
 
95
+ # Função para processar a imagem de entrada e calcular as características dos clusters
96
+ def processar_imagem_de_entrada_wrapper(img, modelo, salvar_resultado=False, nome_arquivo=None):
97
+ model = models[modelo]
98
+ resultado, img_out = processar_imagem_de_entrada(img, modelo, model) # Passe 'model' como 'pipe' aqui
99
+
100
+ # Resto do código permanece inalterado
101
  kmeans = KMeans(n_clusters=2, random_state=0)
102
+ flattened_img = img_out[:, :, 0].reshape((-1, 1))
103
+ kmeans.fit(flattened_img)
104
  labels = kmeans.labels_
105
  cluster_centers = kmeans.cluster_centers_
106
+
107
+ # Extração de características dos clusters
108
+ num_clusters = len(cluster_centers)
109
+ cluster_features = []
110
+ for i in range(num_clusters):
111
+ cluster_mask = labels == i # Create a boolean mask for the cluster
112
+
113
+ # Calcular área do cluster
114
+ area = np.sum(cluster_mask)
115
+
116
+ if area == 0: # Skip empty clusters
117
+ continue
118
+
119
+ # Calcular forma do cluster usando a relação entre área e perímetro
120
+ contours, _ = cv2.findContours(np.uint8(cluster_mask), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
121
+ if len(contours) > 0:
122
+ perimeter = cv2.arcLength(contours[0], True)
123
+ compactness = 4 * np.pi * area / (perimeter ** 2)
124
+
125
+ cluster_features.append({'area': area, 'compactness': compactness})
126
+
127
+ # Decidir se há doença com base nas características dos clusters
128
+ has_disease_flag = any(feature['area'] >= 200 and feature['compactness'] < 0.3 for feature in cluster_features)
129
+
130
+ # Formatar o indicador de doença como uma string
131
+ if has_disease_flag:
132
+ status_doenca = "Sim"
133
+ explanation = "A máquina detectou uma possível doença nos vasos sanguíneos."
134
+ else:
135
+ status_doenca = "Não"
136
+ explanation = "A máquina não detectou nenhuma doença nos vasos sanguíneos."
137
+
138
+ return resultado, img_out, status_doenca, explanation, f"{num_analises} análises realizadas"
139
+
140
+ # ...
141
 
142
+ # Iniciar a interface Gradio
143
+ my_app.launch()
 
 
 
 
144
 
 
145
 
146
  # Inicializar a contagem de análises
147
  num_analises = 0