Я реализую модуль HaarCascade и отображаю обнаруженные лица в окне, выделяя их прямоугольниками. Но видеть в окне только обрезанные лица.

Основные шаги:

Импортируйте одну библиотеку, которая будет использоваться для захвата изображения.

import cv2

главное - это модель, которая будет использоваться для выполнения этой задачи, то есть модель HaarCascade.

Модели Haarcascade широко используются для обнаружения лиц в различных приложениях, включая системы распознавания лиц, системы наблюдения и дополненную реальность. OpenCV, популярная библиотека компьютерного зрения, предоставляет предварительно обученные каскадные модели Хаара для обнаружения лиц, глаз и других объектов.

поэтому, используя это, мы напишем код:

import cv2

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
video_capture = cv2.VideoCapture(0)  

while True:
    ret, frame = video_capture.read()
    if not ret:
        break

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
    blur = cv2.GaussianBlur(frame, (99, 99), 0)

    for (x, y, w, h) in faces:
        
        left = frame[:, 0:x]  
        blur_roi = blur[:, 0:x] 
        frame[:, 0:x] = blur_roi
        
        
        right = frame[:, x+w:]  
        blur_roi = blur[:, x+w:] 
        frame[:, x+w:] = blur_roi
        
        upper = frame[0:y, :]  
        blur_roi = blur[0:y, :] 
        frame[0:y, :] = blur_roi
        
        lower = frame[y+h:, :]  
        blur_roi = blur[y+h:, :] 
        frame[y+h:, :] = blur_roi

        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    cv2.imshow('Face Detection with Background Blur', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture.release()
cv2.destroyAllWindows()
video_capture.release()

выход: