Spaces:
Build error
Build error
Commit
·
a387962
1
Parent(s):
516309b
Añadir comparación lado a lado de rostros detectados con sus coincidencias
Browse files- streamlit_app.py +44 -0
streamlit_app.py
CHANGED
|
@@ -1945,6 +1945,22 @@ def main():
|
|
| 1945 |
f"{best_match['name']}",
|
| 1946 |
f"{best_match['similarity']:.1f}%"
|
| 1947 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1948 |
if show_all_matches and len(matches) > 1:
|
| 1949 |
st.write("Otras coincidencias:")
|
| 1950 |
for j, match in enumerate(matches[1:3]):
|
|
@@ -1971,6 +1987,34 @@ def main():
|
|
| 1971 |
if uploaded_file is not None:
|
| 1972 |
st.subheader("Recognition Result")
|
| 1973 |
st.image(result_image, channels='BGR', use_container_width=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1974 |
|
| 1975 |
with tab3:
|
| 1976 |
st.header("Real-time Recognition")
|
|
|
|
| 1945 |
f"{best_match['name']}",
|
| 1946 |
f"{best_match['similarity']:.1f}%"
|
| 1947 |
)
|
| 1948 |
+
|
| 1949 |
+
# Guardar información para mostrar la imagen de referencia después
|
| 1950 |
+
if 'matched_faces' not in st.session_state:
|
| 1951 |
+
st.session_state.matched_faces = []
|
| 1952 |
+
|
| 1953 |
+
# Extraer la región del rostro para mostrarla
|
| 1954 |
+
face_crop = image[y1:y2, x1:x2].copy()
|
| 1955 |
+
|
| 1956 |
+
# Guardar información de la coincidencia
|
| 1957 |
+
st.session_state.matched_faces.append({
|
| 1958 |
+
"face_crop": face_crop,
|
| 1959 |
+
"matched_name": best_match['name'],
|
| 1960 |
+
"similarity": best_match['similarity'],
|
| 1961 |
+
"bbox": (x1, y1, x2, y2)
|
| 1962 |
+
})
|
| 1963 |
+
|
| 1964 |
if show_all_matches and len(matches) > 1:
|
| 1965 |
st.write("Otras coincidencias:")
|
| 1966 |
for j, match in enumerate(matches[1:3]):
|
|
|
|
| 1987 |
if uploaded_file is not None:
|
| 1988 |
st.subheader("Recognition Result")
|
| 1989 |
st.image(result_image, channels='BGR', use_container_width=True)
|
| 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
|
| 1998 |
+
comp_col1, comp_col2 = st.columns(2)
|
| 1999 |
+
|
| 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
|
| 2018 |
|
| 2019 |
with tab3:
|
| 2020 |
st.header("Real-time Recognition")
|