[PYTHON] Gesichtserkennung mit OpenCV (Haar-like Feature Classifier)

Haarartiger Merkmalsklassifikator

"Kaskade von verstärkten Klassifikatoren unter Verwendung von Haar-ähnlichen Merkmalen" ist eine Methode, die als Haar-ähnlich bezeichnet wird und ein rechteckiges Muster aus Hell und Dunkel zur Erkennung verwendet. Das Haar-ähnliche Merkmal und das Zielbild werden überlagert, um festzustellen, ob ein Muster vorhanden ist.  haar.png

Die folgenden haarähnlichen Feature-Klassifikatoren werden vorab in OpenCV bereitgestellt. [OpenCV Install Dir]/Library/etc/haarcascades/

Dateiname Inhalt
haarcascade_eye.xml Auge
haarcascade_eye_tree_eyeglasses.xml Brille
haarcascade_frontalcatface.xml Katzengesicht (vorne)
haarcascade_frontalcatface_extended.xml Katzengesicht (vorne)
haarcascade_frontalface_alt.xml Gesicht (vorne)
haarcascade_frontalface_alt2.xml Gesicht (vorne)
haarcascade_frontalface_alt_tree.xml Gesicht (vorne)
haarcascade_frontalface_default.xml Gesicht (vorne)
haarcascade_fullbody.xml Ganzer Körper
haarcascade_lefteye_2splits.xml linkes Auge
haarcascade_licence_plate_rus_16stages.xml Russisches Nummernschild (ganz)
haarcascade_lowerbody.xml Unterkörper
haarcascade_profileface.xml Gesicht (Zertifizierungsfoto)
haarcascade_righteye_2splits.xml rechtes Auge
haarcascade_russian_plate_number.xml Russisches Nummernschild (Nummer)
haarcascade_smile.xml Lächeln
haarcascade_upperbody.xml Oberkörper

Dieses Mal werde ich versuchen, die Gesichtserkennung mit dem Haar-ähnlichen Feature-Klassifikator von OpenCV zu erkennen.

OpenCV OpenCV (Open Source Computer Vision Library) ist eine Sammlung von BSD-lizenzierten Video- / Bildverarbeitungsbibliotheken. Es gibt viele Algorithmen wie Bildfilterung, Vorlagenabgleich, Objekterkennung, Videoanalyse und maschinelles Lernen.

■ Beispiel für Bewegungsverfolgung mit OpenCV (OpenCV Google Summer of Code 2015) https://www.youtube.com/watch?v=OUbUFn71S4s

■ Klicken Sie hier für die Installation und einfache Verwendung Installieren Sie OpenCV 3 (Core + Contrib) in der Python 3-Umgebung und unterscheiden Sie zwischen OpenCV 2 und OpenCV 3 und überprüfen Sie die einfache Bedienung ★ Bitte installieren Sie core + opencv_contrib, um die Bewegungsvorlage auszuführen.

■ Klicken Sie hier, um Standbilder zu filtern Versuchen Sie die Kantenerkennung mit OpenCV Führen Sie verschiedene Filter mit OpenCV durch (Gradient, Highpass, Laplacian, Gaussian) Extrahieren Sie Feature-Punkte mit OpenCV (AgastFeature, FAST, GFTT, MSER, AKAZE, BRISK, KAZE, ORB, SimpleBlob)

■ Klicken Sie hier, um Videodateien zu verarbeiten Versuchen Sie, Videos in Echtzeit mit OpenCV zu konvertieren Versuchen Sie, Webkamera- / Videokamera-Videos in Echtzeit mit OpenCV zu konvertieren Zeichnen Sie den optischen Fluss in Echtzeit mit OpenCV (Shi-Tomasi-Methode, Lucas-Kanade-Methode) Objektverfolgung mit OpenCV (Verfolgen von Funktionspunkten, die von der Maus mit der Lucas-Kanade-Methode festgelegt wurden Bewegungsvorlagenanalyse mit OpenCV (Erkennen von Objekten und deren Bewegungsrichtungen in Echtzeit)

Programm

Der Fluss ist wie folgt.

  1. Erstellen Sie mit cv2.CascadeClassifier ([Haar-like feature file.xml]) einen Haar-ähnlichen Feature-Klassifikator.
  2. Geben Sie ein Bild für den Haar-ähnlichen Feature-Klassifikator an
  3. Schließen Sie den erkannten Bereich im Bild mit einem Rechteck ein

face.py


import cv2

# Haar-wie das Laden von Feature-Klassifikatoren
face_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascades/haarcascade_eye.xml')

#Bilddatei wird geladen
img = cv2.imread('face.png')

#Graustufenumwandlung
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#Gesichtserkennung
faces = face_cascade.detectMultiScale(gray)
for (x,y,w,h) in faces:
    #Schließen Sie das erkannte Gesicht in ein Rechteck ein
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    #Gesichtsbild (Graustufen)
    roi_gray = gray[y:y+h, x:x+w]
    #Gesicht g erhöhen (Farbskala)
    roi_color = img[y:y+h, x:x+w]
    #Erkennen Sie die Augen im Gesicht
    eyes = eye_cascade.detectMultiScale(roi_gray)
    for (ex,ey,ew,eh) in eyes:
        #Schließen Sie das erkannte Auge in ein Rechteck ein
        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)

#Bildschirm
cv2.imshow('img',img)

#Drücken Sie eine beliebige Taste, um den Vorgang abzuschließen
cv2.waitKey(0)
cv2.destroyAllWindows()

Ausführungsergebnis

Wenn es sich um ein solches Bild handelt, wird es so erkannt. Ich erkenne alle Gesichter, aber die Augen erkennen nicht viel, wahrscheinlich aufgrund des vagen Bildes. result.png

Wenn es sich um ein solches Bild handelt, wird es so erkannt. Das ganze Gesicht ist gut erkennbar. Andererseits erkennen die Augen, ob die Sichtlinie nach vorne zeigt. result12.png

Wenn Sie die Erkennungsmuster wie Augen und Profil bis zu einem gewissen Grad verstehen, können Sie anscheinend die Sichtlinie und die Objekte vor der Sichtlinie erraten.

Recommended Posts

Gesichtserkennung mit OpenCV (Haar-like Feature Classifier)
Gesichtserkennung mit OpenCV von Python
Feature-Erkennung mit opencv (Eckenerkennung)
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Gesichtserkennung / Schneiden mit OpenCV
Gesichtserkennung mit Hauptkomponentenanalyse
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Gesichtserkennung mit einem Kaskadenklassifikator
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
[python, openCV] base64 Gesichtserkennung in Bildern
Schätzen Sie mit OpenCV (Eigenface, Fisherface, LBPH), wer das Gesicht hat.
Gesichtserkennung mit Edison
Gesichtserkennung in Echtzeit mit von getUserMedia [HTML5, openCV] aufgenommenem Video
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
Ähnliche Gesichtsbilderkennung mit Gesichtserkennung und PCA- und K-Mittel-Clustering