# backend/core/face_detection.py import cv2 from ultralytics import YOLO import numpy as np class FaceDetector: def __init__(self, model_path='yolov8n-face.pt'): self.model = YOLO(model_path) self.confidence_threshold = 0.5 def detect_faces(self, frame): """Detect faces in a frame using YOLO""" results = self.model(frame) faces = [] for result in results: boxes = result.boxes for box in boxes: if box.conf > self.confidence_threshold: x1, y1, x2, y2 = box.xyxy[0].cpu().numpy().astype(int) face = frame[y1:y2, x1:x2] faces.append({ 'bbox': (x1, y1, x2, y2), 'face_img': face, 'confidence': box.conf }) return faces