Update app.py
Browse files
app.py
CHANGED
@@ -134,40 +134,40 @@ def processar_imagem_de_entrada_wrapper(img, modelo, salvar_resultado=False):
|
|
134 |
labels = kmeans.labels_
|
135 |
cluster_centers = kmeans.cluster_centers_
|
136 |
|
|
|
|
|
137 |
# Extração de características dos clusters
|
138 |
num_clusters = len(cluster_centers)
|
139 |
cluster_features = []
|
140 |
for i in range(num_clusters):
|
141 |
-
cluster_mask = labels == i #
|
142 |
-
|
143 |
-
#
|
144 |
area = np.sum(cluster_mask)
|
145 |
-
|
146 |
-
if area == 0: #
|
147 |
continue
|
148 |
-
|
149 |
-
#
|
150 |
contours, _ = cv2.findContours(np.uint8(cluster_mask), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
151 |
if len(contours) > 0:
|
152 |
perimeter = cv2.arcLength(contours[0], True)
|
153 |
compactness = 4 * np.pi * area / (perimeter ** 2)
|
154 |
-
|
155 |
cluster_features.append({'area': area, 'compactness': compactness})
|
156 |
|
157 |
-
#
|
158 |
has_disease_flag = any(feature['area'] >= 200 and feature['compactness'] < 0.3 for feature in cluster_features)
|
159 |
|
160 |
-
#
|
161 |
if has_disease_flag:
|
162 |
status_doenca = "Sim"
|
163 |
-
|
164 |
else:
|
165 |
status_doenca = "Não"
|
166 |
-
|
167 |
|
168 |
-
#
|
169 |
-
global num_analises
|
170 |
-
num_analises += 1
|
171 |
|
172 |
return resultado, img_out, status_doenca, explanation, f"{num_analises} análises realizadas"
|
173 |
|
|
|
134 |
labels = kmeans.labels_
|
135 |
cluster_centers = kmeans.cluster_centers_
|
136 |
|
137 |
+
# Resto do código permanece inalterado
|
138 |
+
|
139 |
# Extração de características dos clusters
|
140 |
num_clusters = len(cluster_centers)
|
141 |
cluster_features = []
|
142 |
for i in range(num_clusters):
|
143 |
+
cluster_mask = labels == i # Create a boolean mask for the cluster
|
144 |
+
|
145 |
+
# Calcular área do cluster
|
146 |
area = np.sum(cluster_mask)
|
147 |
+
|
148 |
+
if area == 0: # Skip empty clusters
|
149 |
continue
|
150 |
+
|
151 |
+
# Calcular forma do cluster usando a relação entre área e perímetro
|
152 |
contours, _ = cv2.findContours(np.uint8(cluster_mask), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
153 |
if len(contours) > 0:
|
154 |
perimeter = cv2.arcLength(contours[0], True)
|
155 |
compactness = 4 * np.pi * area / (perimeter ** 2)
|
156 |
+
|
157 |
cluster_features.append({'area': area, 'compactness': compactness})
|
158 |
|
159 |
+
# Decidir se há doença com base nas características dos clusters
|
160 |
has_disease_flag = any(feature['area'] >= 200 and feature['compactness'] < 0.3 for feature in cluster_features)
|
161 |
|
162 |
+
# Formatar o indicador de doença como uma string
|
163 |
if has_disease_flag:
|
164 |
status_doenca = "Sim"
|
165 |
+
explanation = "A máquina detectou uma possível doença nos vasos sanguíneos."
|
166 |
else:
|
167 |
status_doenca = "Não"
|
168 |
+
explanation = "A máquina não detectou nenhuma doença nos vasos sanguíneos."
|
169 |
|
170 |
+
# Resto do código permanece inalterado
|
|
|
|
|
171 |
|
172 |
return resultado, img_out, status_doenca, explanation, f"{num_analises} análises realizadas"
|
173 |
|