Spaces:
Build error
Build error
Commit
·
aa6cb9f
1
Parent(s):
17acc92
Eliminar rectángulos de test y predeterminados para mostrar solo las detecciones reales
Browse files- streamlit_app.py +6 -73
streamlit_app.py
CHANGED
|
@@ -2661,43 +2661,14 @@ def main():
|
|
| 2661 |
displayCtx.fillText(`Rostros: ${lastBoxes.length}`, 20, 30);
|
| 2662 |
} else if (video.readyState === video.HAVE_ENOUGH_DATA) {
|
| 2663 |
// Si no hay cajas almacenadas pero el video está activo,
|
| 2664 |
-
//
|
| 2665 |
-
const w = display.width;
|
| 2666 |
-
const h = display.height;
|
| 2667 |
-
const centerX = w / 2;
|
| 2668 |
-
const centerY = h / 2;
|
| 2669 |
-
const faceW = w * 0.4; // 40% del ancho
|
| 2670 |
-
const faceH = h * 0.5; // 50% del alto
|
| 2671 |
-
|
| 2672 |
-
const x1 = centerX - faceW / 2;
|
| 2673 |
-
const y1 = centerY - faceH / 2;
|
| 2674 |
-
const x2 = x1 + faceW;
|
| 2675 |
-
const y2 = y1 + faceH;
|
| 2676 |
-
|
| 2677 |
-
// Dibujar rectángulo predeterminado
|
| 2678 |
-
displayCtx.strokeStyle = '#FFA500'; // Naranja
|
| 2679 |
-
displayCtx.lineWidth = 6;
|
| 2680 |
-
displayCtx.strokeRect(x1, y1, faceW, faceH);
|
| 2681 |
-
|
| 2682 |
-
// Añadir un relleno semitransparente
|
| 2683 |
-
displayCtx.fillStyle = 'rgba(255, 165, 0, 0.2)';
|
| 2684 |
-
displayCtx.fillRect(x1, y1, faceW, faceH);
|
| 2685 |
-
|
| 2686 |
-
// Añadir un fondo para el texto
|
| 2687 |
-
displayCtx.fillStyle = 'rgba(0, 0, 0, 0.7)';
|
| 2688 |
-
displayCtx.fillRect(x1, y1-25, 190, 25);
|
| 2689 |
-
|
| 2690 |
-
// Dibujar etiqueta
|
| 2691 |
-
displayCtx.fillStyle = '#FFA500';
|
| 2692 |
-
displayCtx.font = 'bold 18px Arial';
|
| 2693 |
-
displayCtx.fillText('Rostro predeterminado', x1+5, y1-5);
|
| 2694 |
|
| 2695 |
// Mensaje de estado
|
| 2696 |
displayCtx.fillStyle = 'rgba(0, 0, 0, 0.7)';
|
| 2697 |
-
displayCtx.fillRect(10, 10,
|
| 2698 |
-
displayCtx.fillStyle = '#
|
| 2699 |
displayCtx.font = 'bold 18px Arial';
|
| 2700 |
-
displayCtx.fillText('
|
| 2701 |
}
|
| 2702 |
}
|
| 2703 |
|
|
@@ -2768,35 +2739,13 @@ def main():
|
|
| 2768 |
lastBoxes = [];
|
| 2769 |
}
|
| 2770 |
}
|
| 2771 |
-
|
| 2772 |
-
// Dibuja un rectángulo de prueba siempre, para verificar que el canvas funciona
|
| 2773 |
-
drawTestRect();
|
| 2774 |
}
|
| 2775 |
-
} else if (event.data && event.data.type === 'testRect') {
|
| 2776 |
-
// Si solo recibimos una señal de prueba, dibujar el rectángulo
|
| 2777 |
-
console.log('Recibido señal para dibujar rectángulo de prueba');
|
| 2778 |
-
drawTestRect();
|
| 2779 |
}
|
| 2780 |
});
|
| 2781 |
|
| 2782 |
-
// Dibujar un rectángulo de prueba para verificar que el canvas funciona
|
| 2783 |
-
function drawTestRect() {
|
| 2784 |
-
displayCtx.strokeStyle = '#FF0000'; // Rojo brillante
|
| 2785 |
-
displayCtx.lineWidth = 5;
|
| 2786 |
-
displayCtx.strokeRect(50, 50, 100, 100);
|
| 2787 |
-
displayCtx.fillStyle = 'rgba(255, 0, 0, 0.3)'; // Relleno semitransparente
|
| 2788 |
-
displayCtx.fillRect(50, 50, 100, 100);
|
| 2789 |
-
displayCtx.fillStyle = '#FF0000';
|
| 2790 |
-
displayCtx.font = 'bold 16px Arial';
|
| 2791 |
-
displayCtx.fillText('TEST', 85, 100);
|
| 2792 |
-
console.log('Rectángulo de prueba dibujado');
|
| 2793 |
-
}
|
| 2794 |
-
|
| 2795 |
// Arrancar todo
|
| 2796 |
async function initCapture() {
|
| 2797 |
await setupCamera();
|
| 2798 |
-
// Dibujar rectángulo de prueba
|
| 2799 |
-
setTimeout(drawTestRect, 1000);
|
| 2800 |
// Empezar a capturar frames periódicamente
|
| 2801 |
captureInterval = setInterval(captureFrame, captureDelay);
|
| 2802 |
console.log(`Captura iniciada con intervalo de ${captureDelay}ms`);
|
|
@@ -2950,13 +2899,13 @@ def main():
|
|
| 2950 |
force_display_js = """
|
| 2951 |
<script>
|
| 2952 |
(function() {
|
| 2953 |
-
console.log("Forzando actualización del
|
| 2954 |
|
| 2955 |
const noDetectionMessage = {
|
| 2956 |
type: 'faceBoxes',
|
| 2957 |
boxes: [],
|
| 2958 |
timestamp: Date.now(),
|
| 2959 |
-
forceDisplay:
|
| 2960 |
};
|
| 2961 |
|
| 2962 |
// Enviar a todos los destinos posibles
|
|
@@ -2969,22 +2918,6 @@ def main():
|
|
| 2969 |
try { frames[i].contentWindow.postMessage(noDetectionMessage, '*'); } catch(e) {}
|
| 2970 |
}
|
| 2971 |
} catch(e) {}
|
| 2972 |
-
|
| 2973 |
-
// Enviar señal de prueba para verificar comunicación
|
| 2974 |
-
const testMessage = {
|
| 2975 |
-
type: 'testRect',
|
| 2976 |
-
timestamp: Date.now()
|
| 2977 |
-
};
|
| 2978 |
-
|
| 2979 |
-
try { window.parent.postMessage(testMessage, '*'); } catch(e) {}
|
| 2980 |
-
try { window.postMessage(testMessage, '*'); } catch(e) {}
|
| 2981 |
-
|
| 2982 |
-
try {
|
| 2983 |
-
const frames = document.getElementsByTagName('iframe');
|
| 2984 |
-
for(let i = 0; i < frames.length; i++) {
|
| 2985 |
-
try { frames[i].contentWindow.postMessage(testMessage, '*'); } catch(e) {}
|
| 2986 |
-
}
|
| 2987 |
-
} catch(e) {}
|
| 2988 |
})();
|
| 2989 |
</script>
|
| 2990 |
"""
|
|
|
|
| 2661 |
displayCtx.fillText(`Rostros: ${lastBoxes.length}`, 20, 30);
|
| 2662 |
} else if (video.readyState === video.HAVE_ENOUGH_DATA) {
|
| 2663 |
// Si no hay cajas almacenadas pero el video está activo,
|
| 2664 |
+
// simplemente mostrar el mensaje "No se detectan rostros"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2665 |
|
| 2666 |
// Mensaje de estado
|
| 2667 |
displayCtx.fillStyle = 'rgba(0, 0, 0, 0.7)';
|
| 2668 |
+
displayCtx.fillRect(10, 10, 250, 30);
|
| 2669 |
+
displayCtx.fillStyle = '#FF9900';
|
| 2670 |
displayCtx.font = 'bold 18px Arial';
|
| 2671 |
+
displayCtx.fillText('No se detectan rostros', 20, 30);
|
| 2672 |
}
|
| 2673 |
}
|
| 2674 |
|
|
|
|
| 2739 |
lastBoxes = [];
|
| 2740 |
}
|
| 2741 |
}
|
|
|
|
|
|
|
|
|
|
| 2742 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2743 |
}
|
| 2744 |
});
|
| 2745 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2746 |
// Arrancar todo
|
| 2747 |
async function initCapture() {
|
| 2748 |
await setupCamera();
|
|
|
|
|
|
|
| 2749 |
// Empezar a capturar frames periódicamente
|
| 2750 |
captureInterval = setInterval(captureFrame, captureDelay);
|
| 2751 |
console.log(`Captura iniciada con intervalo de ${captureDelay}ms`);
|
|
|
|
| 2899 |
force_display_js = """
|
| 2900 |
<script>
|
| 2901 |
(function() {
|
| 2902 |
+
console.log("Forzando actualización del display");
|
| 2903 |
|
| 2904 |
const noDetectionMessage = {
|
| 2905 |
type: 'faceBoxes',
|
| 2906 |
boxes: [],
|
| 2907 |
timestamp: Date.now(),
|
| 2908 |
+
forceDisplay: false
|
| 2909 |
};
|
| 2910 |
|
| 2911 |
// Enviar a todos los destinos posibles
|
|
|
|
| 2918 |
try { frames[i].contentWindow.postMessage(noDetectionMessage, '*'); } catch(e) {}
|
| 2919 |
}
|
| 2920 |
} catch(e) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2921 |
})();
|
| 2922 |
</script>
|
| 2923 |
"""
|