jarondon82 commited on
Commit
85dbeb5
·
1 Parent(s): a387962

Implementar guardado y visualización de imágenes de referencia en comparación de rostros y cambiar texto a inglés

Browse files
Files changed (1) hide show
  1. streamlit_app.py +23 -10
streamlit_app.py CHANGED
@@ -1514,8 +1514,12 @@ def main():
1514
  # Extraer embeddings del primer rostro
1515
  if bboxes and len(bboxes) > 0 and len(bboxes[0]) == 5:
1516
  embeddings_all_models = extract_face_embeddings_all_models(image, bboxes[0])
1517
-
1518
  if embeddings_all_models:
 
 
 
 
1519
  # Guardar en la base de datos
1520
  if add_to_existing and person_name in st.session_state.face_database:
1521
  # Añadir a persona existente
@@ -1538,12 +1542,15 @@ def main():
1538
  # Añadir nuevo modelo
1539
  st.session_state.face_database[person_name]['models'].append(model_name)
1540
  st.session_state.face_database[person_name]['embeddings'].append(embedding['embedding'])
 
 
 
1541
 
1542
  # Incrementar contador
1543
  st.session_state.face_database[person_name]['count'] += 1
1544
  else:
1545
  # Crear nueva entrada en la base de datos
1546
- st.sidebar.write(f"Creating new entry for {person_name} (multiple faces)")
1547
 
1548
  models = []
1549
  embeddings = []
@@ -1555,7 +1562,8 @@ def main():
1555
  st.session_state.face_database[person_name] = {
1556
  'embeddings': embeddings,
1557
  'models': models,
1558
- 'count': 1
 
1559
  }
1560
 
1561
  st.success(f"Face registered successfully for {person_name}!")
@@ -1990,8 +1998,8 @@ def main():
1990
 
1991
  # Mostrar comparación lado a lado de cada rostro con su coincidencia
1992
  if 'matched_faces' in st.session_state and st.session_state.matched_faces:
1993
- st.subheader("Comparación de rostros")
1994
- st.write("A continuación se muestra cada rostro detectado junto con su coincidencia en la base de datos:")
1995
 
1996
  for idx, match_info in enumerate(st.session_state.matched_faces):
1997
  # Crear columnas para la comparación
@@ -2000,18 +2008,23 @@ def main():
2000
  # Mostrar el rostro detectado
2001
  with comp_col1:
2002
  st.image(cv2.cvtColor(match_info["face_crop"], cv2.COLOR_BGR2RGB),
2003
- caption=f"Rostro detectado #{idx+1}",
2004
  use_column_width=True)
2005
 
2006
  # Mostrar imagen de referencia si existe
2007
  with comp_col2:
2008
  # Obtener la primera imagen de referencia de la carpeta de la base de datos si existe
2009
  reference_name = match_info["matched_name"]
2010
- st.write(f"Coincidencia: **{reference_name}** ({match_info['similarity']:.1f}%)")
2011
 
2012
- # Aquí se puede añadir código para cargar una imagen de referencia de la base de datos
2013
- # Por ahora solo mostramos un placeholder
2014
- st.info(f"La imagen de referencia para {reference_name} no está disponible en esta versión. Se implementará en futuras actualizaciones.")
 
 
 
 
 
2015
 
2016
  # Limpiar el estado para la próxima ejecución
2017
  del st.session_state.matched_faces
 
1514
  # Extraer embeddings del primer rostro
1515
  if bboxes and len(bboxes) > 0 and len(bboxes[0]) == 5:
1516
  embeddings_all_models = extract_face_embeddings_all_models(image, bboxes[0])
1517
+
1518
  if embeddings_all_models:
1519
+ # Guardar la imagen del rostro para referencia
1520
+ x1, y1, x2, y2, _ = bboxes[0]
1521
+ face_crop = image[y1:y2, x1:x2].copy()
1522
+
1523
  # Guardar en la base de datos
1524
  if add_to_existing and person_name in st.session_state.face_database:
1525
  # Añadir a persona existente
 
1542
  # Añadir nuevo modelo
1543
  st.session_state.face_database[person_name]['models'].append(model_name)
1544
  st.session_state.face_database[person_name]['embeddings'].append(embedding['embedding'])
1545
+
1546
+ # Actualizar imagen de referencia
1547
+ st.session_state.face_database[person_name]['face_image'] = face_crop
1548
 
1549
  # Incrementar contador
1550
  st.session_state.face_database[person_name]['count'] += 1
1551
  else:
1552
  # Crear nueva entrada en la base de datos
1553
+ st.sidebar.write(f"Creating new entry for {person_name}")
1554
 
1555
  models = []
1556
  embeddings = []
 
1562
  st.session_state.face_database[person_name] = {
1563
  'embeddings': embeddings,
1564
  'models': models,
1565
+ 'count': 1,
1566
+ 'face_image': face_crop
1567
  }
1568
 
1569
  st.success(f"Face registered successfully for {person_name}!")
 
1998
 
1999
  # Mostrar comparación lado a lado de cada rostro con su coincidencia
2000
  if 'matched_faces' in st.session_state and st.session_state.matched_faces:
2001
+ st.subheader("Face Comparison")
2002
+ st.write("Below you can see each detected face alongside its match in the database:")
2003
 
2004
  for idx, match_info in enumerate(st.session_state.matched_faces):
2005
  # Crear columnas para la comparación
 
2008
  # Mostrar el rostro detectado
2009
  with comp_col1:
2010
  st.image(cv2.cvtColor(match_info["face_crop"], cv2.COLOR_BGR2RGB),
2011
+ caption=f"Detected Face #{idx+1}",
2012
  use_column_width=True)
2013
 
2014
  # Mostrar imagen de referencia si existe
2015
  with comp_col2:
2016
  # Obtener la primera imagen de referencia de la carpeta de la base de datos si existe
2017
  reference_name = match_info["matched_name"]
2018
+ st.write(f"Match: **{reference_name}** ({match_info['similarity']:.1f}%)")
2019
 
2020
+ # Intentar mostrar la imagen de referencia guardada
2021
+ if reference_name in st.session_state.face_database and 'face_image' in st.session_state.face_database[reference_name]:
2022
+ reference_image = st.session_state.face_database[reference_name]['face_image']
2023
+ st.image(cv2.cvtColor(reference_image, cv2.COLOR_BGR2RGB),
2024
+ caption=f"Reference image of {reference_name}",
2025
+ use_column_width=True)
2026
+ else:
2027
+ st.info(f"The reference image for {reference_name} is not available. Please re-register this person to see their image here.")
2028
 
2029
  # Limpiar el estado para la próxima ejecución
2030
  del st.session_state.matched_faces