Spaces:
Build error
Build error
| import cv2 | |
| import time | |
| def main(): | |
| """ | |
| Script simple para probar la captura de cámara y dibujo de rectángulos en tiempo real. | |
| Este script no realiza detección facial, solo dibuja rectángulos predefinidos | |
| para verificar que el hardware y la visualización funcionan correctamente. | |
| """ | |
| print("Iniciando prueba de cámara directa...") | |
| # Iniciar la cámara | |
| cap = cv2.VideoCapture(0) | |
| if not cap.isOpened(): | |
| print("Error: No se pudo abrir la cámara. Verifica la conexión y permisos.") | |
| return | |
| print("Cámara iniciada. Presiona 'q' para salir.") | |
| # Contador de frames | |
| frame_count = 0 | |
| start_time = time.time() | |
| # Rectángulo fijo en el centro (simulando detección) | |
| rect_size = 200 | |
| while True: | |
| # Capturar frame | |
| ret, frame = cap.read() | |
| if not ret: | |
| print("Error: No se pudo leer el frame. La cámara podría estar desconectada.") | |
| break | |
| # Conteo de FPS | |
| frame_count += 1 | |
| elapsed_time = time.time() - start_time | |
| fps = frame_count / elapsed_time if elapsed_time > 0 else 0 | |
| # Obtener dimensiones del frame | |
| height, width, _ = frame.shape | |
| # Crear una copia para dibujar | |
| display = frame.copy() | |
| # Dibujar rectángulo central fijo (simulando detección facial) | |
| center_x, center_y = width // 2, height // 2 | |
| x1 = center_x - rect_size // 2 | |
| y1 = center_y - rect_size // 2 | |
| x2 = center_x + rect_size // 2 | |
| y2 = center_y + rect_size // 2 | |
| # Dibujar con color verde y grosor 3 | |
| cv2.rectangle(display, (x1, y1), (x2, y2), (0, 255, 0), 3) | |
| cv2.putText(display, "ROSTRO SIMULADO", (x1, y1 - 10), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) | |
| # Dibujar un segundo rectángulo en la esquina (para verificar que se dibujan correctamente) | |
| cv2.rectangle(display, (50, 50), (200, 200), (0, 0, 255), 3) | |
| cv2.putText(display, "PRUEBA", (50, 40), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) | |
| # Mostrar información de FPS | |
| cv2.putText(display, f"FPS: {fps:.1f}", (10, height - 30), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2) | |
| # Mostrar número de frame | |
| cv2.putText(display, f"Frame: {frame_count}", (10, height - 60), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2) | |
| # Mostrar timestamp | |
| timestamp = time.strftime("%H:%M:%S") | |
| cv2.putText(display, f"Hora: {timestamp}", (width - 200, height - 30), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255, 255, 255), 2) | |
| # Mostrar resultado | |
| cv2.imshow("Prueba de Visualización", display) | |
| # Salir si se presiona 'q' | |
| if cv2.waitKey(1) & 0xFF == ord('q'): | |
| break | |
| # Mostrar estadísticas | |
| print(f"Frames capturados: {frame_count}") | |
| print(f"Tiempo de ejecución: {elapsed_time:.2f} segundos") | |
| print(f"FPS promedio: {fps:.2f}") | |
| # Liberar recursos | |
| cap.release() | |
| cv2.destroyAllWindows() | |
| if __name__ == "__main__": | |
| main() |