startech-api / backend /test_face.py
persee-tech's picture
Déploiement final Startech V1
47cf216
import cv2
from deepface import DeepFace
import time
# Essaie d'ouvrir la caméra (0 par défaut)
cap = cv2.VideoCapture(0)
print("📸 Caméra active. Regarde l'objectif...")
print("Appuie sur la touche 'q' pour quitter.")
last_analysis_time = 0
current_text = "Recherche..."
x, y, w, h = 0, 0, 0, 0
while True:
ret, frame = cap.read()
if not ret:
print("Erreur: Impossible de lire la caméra")
break
# Analyse toutes les 0.5 secondes
if time.time() - last_analysis_time > 0.5:
try:
# enforce_detection=False évite le crash si pas de visage
result = DeepFace.analyze(frame, actions=['emotion'], enforce_detection=False)
# DeepFace renvoie une liste
if isinstance(result, list):
data = result[0]
else:
data = result
emotion = data['dominant_emotion']
score = data['emotion'][emotion]
current_text = f"{emotion.upper()} ({int(score)}%)"
region = data['region']
x, y, w, h = region['x'], region['y'], region['w'], region['h']
last_analysis_time = time.time()
except Exception as e:
pass
# Dessine le carré et le texte si un visage est trouvé
if w > 0:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(frame, current_text, (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
cv2.imshow('NeuroLink Face Test', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
# Force la fermeture des fenêtres sur Mac
for i in range(5):
cv2.waitKey(1)