Vom Bildanzeiger bis zur Gesichtserkennung

Grafikverarbeitung mit OpenCV

Seite: 2/2

Firma zum Thema

Zusatzmodule für OpenCV

Auch die Zusatzmodule böten genug Stoff für eine Buchreihe in Brockhaus-Ausmaßen. Als Beispiel soll hier das Modul „face“ dienen: Die Gesichtserkennung ist wohl eines der spannendsten Felder, das sich mit OpenCV bearbeiten lässt. Was sich mit ein paar Dutzend Zeilen Python-Code erreichen lässt, ist schon erstaunlich: Sie könnten etwa eine Webcam als Zugangskontrolle zu Rechnern nutzen und identifizierten Mitarbeitern direkt ihre persönlichen Arbeitsplatzkonfigurationen freischalten.

Auch wenn Gesichtserkennung im Detail ein extrem komplexer Prozess ist, ist der Workflow in OpenCV relativ einfach und besteht aus drei Schritten: Zunächst wird eine Gesichts-„Datenbank“ erstellt/antrainiert. Das sind schlicht normierte Bilder bekannter Gesichter plus eine simple Textdatei, die diesen Dateien IDs zuordnet.

Im zweiten Schritt werden Gesichter beispielsweise in einem Webcam-Stream detektiert, also Objekte als Gesichter erkannt. Diese erkannten Gesichter werden nun ebenfalls normiert und im letzten Schritt mit den antrainierten, bekannten Gesichtern abgeglichen – wird dabei ein im Stream detektiertes Gesicht als eines der Antrainierten wieder-erkannt, kann eine beliebige Aktion ausgelöst werden.

Eigentlich möchte man meinen, das alles sei ein riesiger Aufwand – aber Irrtum! Für die Gesichtsdatenbank und die Normierung liefert OpenCV direkt brauchbare Beispielskripte mit. Die eigentliche Gesichtserkennung via Webcam lässt sich mit unter 100 Zeilen Python-Code bewerkstelligen. Und damit ließe sich tatsächlich eine komplette Zugangskontrolle realisieren.

Bildergalerie

Was OpenCV einem nicht abnehmen kann: Das Erstellen ordentlicher Trainingsdaten ist mit viel Fleißarbeit verbunden und das Finden der richtigen Parameter für die unterschiedlichen Algorithmen und Licht-/Kamera-Verhältnisse benötigt viel Zeit für Tests.

Zugriff auf OpenCV

Die Installation ist unter Windows ganz trivial: Auf SourceForge gibt es das entsprechende OpenCV-Binärpaket. Für Linux ist eine manuelle Installation vorgesehen, die einen ganze Reihe an Abhängigkeiten verlangt. Alle Build-, Download- und Installationsanweisungen sowie -quellen beschreibt ein offizielles OpenCV-Tutorial.

Für Windows gibt es zudem den OpenCV demonstrator, der die mitgelieferten Beispiele von OpenCV über eine einfache GUI anbietet, unter anderem auch Gesichts- und Augendetektion per Webcam. Das Programm basiert zwar auf OpenCV 3.0 und ist somit nicht mehr aktuell, bietet aber immer noch den einfachsten Überblick. Unter Linux finden Sie die Python-Beispielskripte unter „/samples/python“. Das Skript „facedetect.py“ öffnet ein Fenster, grabbt eine angeschlossene Webcam und umrahmt detektierte Gesichter mit einem grünen Rahmen. Tipp: Geöffnete Fenster werden mit ESC geschlossen.

Interessanter ist aber das Testen von selbst geschriebenem Code und das geht, natürlich unter Linux, am einfachsten über die interaktive Python-Shell IPython. Hier zeigt sich, wie einfach die Bibliothek angebunden wird: Ein kurzes „import cv2“ genügt, um auf alle Module zugreifen zu können. Oben wurde ein Fenster mit Live-Webcam-Bild in sieben Zeilen versprochen – hier ist es:

cap = cv2.VideoCapture(0)while True:   ret, img = cap.read(0)
   cv2.imshow('test', img)
   if 0xFF & cv2.waitKey(5) == 27:
      break
   cv2.destroyAllWindows()

Über „cap.read“ wird zunächst der aktuelle Frame als Matrix in „img“ zurückgegeben und via „imshow“ in einem Fenster angezeigt. Die restlichen drei Zeilen sorgen lediglich dafür, dass Schleife und Fenster per Klick auf ESC (ASCII-Code 27) beendet werden.

Und wenn Sie noch Ideen benötigen: Ein wirklich schönes, wenn auch schon etwas älteres Projekt, ist das Cassapa Augmented Reality Pool Game. Über eine Kamera wird der Billard-Tisch von oben aufgenommen, OpenCV analysiert Kugeln und Queue und ein Projektor wirft die Laufbahn der Kugel bei aktueller Queue-Haltung zurück auf den Tisch. Man bekommt also eine Zielhilfe, wie man sie sonst nur aus Billard-Computerspielen kennt.

Weitere Anregungen finden Sie zum Beispiel bei Hackster.io. Interessante Projekte sind dabei unter anderem ein smarter Spiegel, automatisierte Nerf Guns, diverse automatische Fahrzeuge, Sicherheitskameras und diverse Projekte rund um die Gesichtserkennung.

(ID:45278928)