Gesichtserkennung in Python mit OpenCV mit Haar Cascade Classifiers

Blog

Gesichtserkennung in Python mit OpenCV mit Haar Cascade Classifiers

Gesichtserkennung in Python mit OpenCV mit Haar Cascade Classifiers

Objekterkennung ist eine Computertechnologie im Zusammenhang mit Computer Vision und Bildverarbeitung, die sich mit der Erkennung von Instanzen semantischer Objekte einer bestimmten Klasse (wie menschliche Gesichter, Autos, Früchte usw.) in digitalen Bildern und Videos befasst.

Haar-Feature-basierte Kaskadenklassifikatoren ist ein auf maschinellem Lernen basierender Ansatz, bei dem eine Kaskadenfunktion aus vielen positiven und negativen Bildern trainiert wird. Es wird dann verwendet, um Objekte in anderen Bildern zu erkennen.

Das Schöne an haarmerkmalsbasierten Kaskadenklassifikatoren ist, dass Sie aus jedem gewünschten Objekt einen Klassifikator erstellen können. OpenCV Ihnen bereits einige Klassifikatorparameter zur Verfügung gestellt, sodass Sie keine Daten sammeln müssen, um darauf zu trainieren.

Installieren Sie zunächst die Anforderungen:

pip3 install opencv-python

Okay, erstelle eine neue Python-Datei und folge ihr, lass uns zuerst importieren OpenCV :

import cv2

Sie benötigen ein Beispielbild zum Testen. Stellen Sie sicher, dass es klare Vorderseiten enthält. Ich werde es verwenden dieses Stockbild das enthält zwei nette liebe Kinder:

# loading the test image image = cv2.imread('kids.jpg'>this list . More precisely, haarcascade_frontalface_default.xml. Let’s put it in a folder called cascades (or whatever) and then load it:

# initialize the face recognizer (default face haar cascade) face_cascade = cv2.CascadeClassifier('cascades/haarcascade_fontalface_default.xml') 

Lassen Sie uns nun alle Gesichter im Bild erkennen:

# detect all the faces in the image faces = face_cascade.detectMultiScale(image_gray) # print the number of faces detected print(f'{len(faces)} faces detected in the image.')

Die Funktion detectMultiScale() nimmt ein Bild als Parameter und erkennt Objekte unterschiedlicher Größe als Liste von Rechtecken, zeichnen wir diese Rechtecke in das Bild:

# for every face, draw a blue rectangle for x, y, width, height in faces: cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2)

Zum Schluss speichern wir das neue Bild:

# save the image with rectangles cv2.imwrite('kids_detected.jpg'>

Pretty cool, right? Feel free to use other object classifiers, other images and even more interesting, use your webcam ! Here is the code for that:

import cv2 # create a new cam object cap = cv2.VideoCapture(0) # initialize the face recognizer (default face haar cascade) face_cascade = cv2.CascadeClassifier('cascades/haarcascade_fontalface_default.xml') while True: # read the image from the cam _, image = cap.read() # converting to grayscale image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # detect all the faces in the image faces = face_cascade.detectMultiScale(image_gray, 1.3, 5) # for every face, draw a blue rectangle for x, y, width, height in faces: cv2.rectangle(image, (x, y), (x + width, y + height), color=(255, 0, 0), thickness=2) cv2.imshow('image', image) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows() 

Sobald Sie dies ausführen (wenn Sie natürlich eine Webcam haben), wird Ihre Webcam geöffnet und beginnt, blaue Rechtecke um alle Vorderseiten im Bild zu zeichnen. Der Code ist nicht so anspruchsvoll, ich habe nur geändert, anstatt das Bild aus einer Datei zu lesen, habe ich ein VideoCapture-Objekt erstellt, das jedes Mal in einer while-Schleife daraus liest. Sobald Sie die q-Taste drücken, wird die Hauptschleife beendet .

Überprüfen Sie den Beamten OpenCV-Dokumentation für die Gesichtserkennung.

In Ordnung, das ist es für dieses Tutorial, Sie können alle Tutorial-Materialien erhalten (einschließlich des Testbilds, der Haarkaskade und des vollständigen Codes). Hier .

Viel Spaß beim Programmieren

#python #maschinenlernen #opencv #deep-learning #data-science