Voraussetzungen: Gesichtserkennung mit dlib und openCV

In diesem Artikel verwenden wir die Bildverarbeitung, um die Anzahl der Gesichter zu erkennen und zu zählen. Wir sollen nicht alle Gesichtszüge bekommen. Stattdessen besteht das Ziel darin, den Begrenzungsrahmen durch einige Methoden zu erhalten, dh durch Koordinaten der Fläche im Bild, abhängig von verschiedenen Bereichen, die durch die Anzahl der Koordinaten abgedeckt werden, Anzahl der zu berechnenden Flächen.

Erforderliche Bibliotheken:

  • Die OpenCV-  Bibliothek in Python ist eine Computer-Vision-Bibliothek, die hauptsächlich für die Bildverarbeitung, Videoverarbeitung und -analyse, Gesichtserkennung und -erkennung usw. verwendet wird.
  • Die Dlib-  Bibliothek in Python enthält den vorab trainierten Gesichtsmarkierungsdetektor, mit dem die (x, y) -Koordinaten erfasst werden, die den Gesichtsstrukturen im Gesicht zugeordnet sind.
  • Numpy  ist ein universelles Array-Verarbeitungspaket. Es bietet ein leistungsstarkes mehrdimensionales Array-Objekt und Tools für die Arbeit mit diesen Arrays.

Nachfolgend finden Sie den schrittweisen Ansatz zum Zählen der Anzahl der Gesichter:

Schritt 1: Importieren Sie die erforderlichen Bibliotheken. 

import cv2 
import numpy as np 
import dlib 

Schritt 2:  Öffnen Sie die Standardkamera zum Erfassen von Gesichtern und verwenden Sie  die dlib-  Bibliothek, um Koordinaten abzurufen .

cap = cv2.VideoCapture(0) 
detector = dlib.get_frontal_face_detector() 

Schritt 3: Zählen Sie die Anzahl der Gesichter.

  • Erfassen Sie die Bilder kontinuierlich.
  • Konvertieren Sie die Frames in Graustufen (nicht erforderlich).
  • Nehmen Sie einen Iterator  i  und initialisieren Sie ihn auf Null.
  • Erhöhen Sie den Iterator jedes Mal um 1, wenn Sie die Koordinaten für die Gesichtsstruktur im Rahmen erhalten.
  • Zeichnen Sie das Feld um jedes erkannte Gesicht zusammen mit seiner Gesichtsanzahl.
while True: 
  
    
    ret, frame = cap.read() 
    frame = cv2.flip(frame, 1) 
  
    
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    faces = detector(gray) 
  
    
    i = 0
    for face in faces: 
        x, y = face.left(), face.top() 
        x1, y1 = face.right(), face.bottom() 
        cv2.rectangle(frame, (x, y), (x1, y1), (0, 255, 0), 2) 
  
        
        i = i+1
  
        
        cv2.putText(frame, 'face num'+str(i), (x-10, y-10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 
        print(face, i) 
  
    
    cv2.imshow('frame', frame) 

Schritt 4: Beenden Sie die Schleife.

if cv2.waitKey(1) & 0xFF == ord('q'): 
    break

Schritt 5: Fenster löschen.

cap.release() 
cv2.destroyAllWindows() 

Nachfolgend finden Sie das vollständige Programm des oben genannten Ansatzes:

import cv2 
import numpy as np 
import dlib 
  
  
cap = cv2.VideoCapture(0) 
  
  
detector = dlib.get_frontal_face_detector() 
  
  
while True: 
  
    
    ret, frame = cap.read() 
    frame = cv2.flip(frame, 1) 
  
    
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
    faces = detector(gray) 
  
    
    i = 0
    for face in faces: 
  
        
        x, y = face.left(), face.top() 
        x1, y1 = face.right(), face.bottom() 
        cv2.rectangle(frame, (x, y), (x1, y1), (0, 255, 0), 2) 
  
        
        i = i+1
  
        
        cv2.putText(frame, 'face num'+str(i), (x-10, y-10), 
                    cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) 
        print(face, i) 
  
    
    cv2.imshow('frame', frame) 
  
    
    if cv2.waitKey(1) & 0xFF == ord('q'): 
        break
  
  
cap.release() 
cv2.destroyAllWindows() 

Ausgabe: