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()