nmariotto commited on
Commit
89e0804
·
verified ·
1 Parent(s): f414132

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -11
app.py CHANGED
@@ -77,6 +77,12 @@ def find_or_create_folder(folder_name, parent=None):
77
  file = drive_service.files().create(body=file_metadata, fields='id').execute()
78
  return file.get('id')
79
 
 
 
 
 
 
 
80
  def process_image(uploaded_file):
81
  try:
82
  safe_name = uploaded_file.name.replace(" ", "_")
@@ -138,12 +144,6 @@ def process_image(uploaded_file):
138
  except:
139
  return None
140
 
141
- def get_image_bytes(image):
142
- buf = BytesIO()
143
- image.save(buf, format="PNG")
144
- buf.seek(0)
145
- return buf
146
-
147
  # 🗂️ Interface principal
148
  st.title("IA Model Segmentation")
149
  upload_option = st.radio("Choose upload type:", ["Single image", "Image folder"])
@@ -160,6 +160,20 @@ if upload_option == "Single image":
160
  st.image(result["Segmentada"], caption="Segmentation", use_container_width=True)
161
  st.image(result["Poligono"], caption="Polygon", use_container_width=True)
162
  st.write(f"📏 **Segmented Area:** {result['Área Segmentada (px²)']:.2f} pixels²")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  else:
164
  st.warning("⚠️ No segmentation was detected in this image.")
165
 
@@ -214,22 +228,20 @@ if results:
214
  row = [imagem_escolhida, avaliacao, observacao]
215
  sheet.append_row(row)
216
 
217
- if avaliacao in ["Aceitável", "Ruim", "Sem segmentação"]:
218
- sufixo = "aceitavel" if avaliacao == "Aceitável" else "ruim" if avaliacao == "Ruim" else "sem_segmentacao"
219
  parent_folder = find_or_create_folder("Feedback Segmentacoes")
220
  subfolder = find_or_create_folder(imagem_escolhida.replace(".png", ""), parent_folder)
221
 
222
  for r in results:
223
  if r["Imagem"] == imagem_escolhida:
224
- # Sempre salva a original
225
  resized_original = resize_image(r["Exibir"])
226
  buffer = BytesIO()
227
  resized_original.save(buffer, format="PNG")
228
  buffer.seek(0)
229
  upload_to_drive(buffer, f"original_{sufixo}.png", subfolder)
230
 
231
- # salva segmentada e polígono se houver segmentação
232
- if avaliacao != "Sem segmentação" and "Segmentada" in r and "Poligono" in r:
233
  resized_segmented = resize_image(Image.open(BytesIO(r["Segmentada"].getvalue())))
234
  resized_polygon = resize_image(Image.open(BytesIO(r["Poligono"].getvalue())))
235
 
 
77
  file = drive_service.files().create(body=file_metadata, fields='id').execute()
78
  return file.get('id')
79
 
80
+ def get_image_bytes(image):
81
+ buf = BytesIO()
82
+ image.save(buf, format="PNG")
83
+ buf.seek(0)
84
+ return buf
85
+
86
  def process_image(uploaded_file):
87
  try:
88
  safe_name = uploaded_file.name.replace(" ", "_")
 
144
  except:
145
  return None
146
 
 
 
 
 
 
 
147
  # 🗂️ Interface principal
148
  st.title("IA Model Segmentation")
149
  upload_option = st.radio("Choose upload type:", ["Single image", "Image folder"])
 
160
  st.image(result["Segmentada"], caption="Segmentation", use_container_width=True)
161
  st.image(result["Poligono"], caption="Polygon", use_container_width=True)
162
  st.write(f"📏 **Segmented Area:** {result['Área Segmentada (px²)']:.2f} pixels²")
163
+
164
+ st.download_button(
165
+ label="📥 Baixar Imagem Segmentada",
166
+ data=result["Segmentada"],
167
+ file_name="imagem_segmentada.png",
168
+ mime="image/png"
169
+ )
170
+
171
+ st.download_button(
172
+ label="📥 Baixar Polígono",
173
+ data=result["Poligono"],
174
+ file_name="poligono.png",
175
+ mime="image/png"
176
+ )
177
  else:
178
  st.warning("⚠️ No segmentation was detected in this image.")
179
 
 
228
  row = [imagem_escolhida, avaliacao, observacao]
229
  sheet.append_row(row)
230
 
231
+ if avaliacao in ["Acceptable", "Bad", "No segmentation"]:
232
+ sufixo = "aceitavel" if avaliacao == "Acceptable" else "ruim" if avaliacao == "Bad" else "sem_segmentacao"
233
  parent_folder = find_or_create_folder("Feedback Segmentacoes")
234
  subfolder = find_or_create_folder(imagem_escolhida.replace(".png", ""), parent_folder)
235
 
236
  for r in results:
237
  if r["Imagem"] == imagem_escolhida:
 
238
  resized_original = resize_image(r["Exibir"])
239
  buffer = BytesIO()
240
  resized_original.save(buffer, format="PNG")
241
  buffer.seek(0)
242
  upload_to_drive(buffer, f"original_{sufixo}.png", subfolder)
243
 
244
+ if avaliacao != "No segmentation" and "Segmentada" in r and "Poligono" in r:
 
245
  resized_segmented = resize_image(Image.open(BytesIO(r["Segmentada"].getvalue())))
246
  resized_polygon = resize_image(Image.open(BytesIO(r["Poligono"].getvalue())))
247