Kleine Sektflaschen Hochzeit
OpenCV bietet eine Vielzahl von Funktionen. Aber welche davon braucht man für die Gesichtserkennung und wie ruft man sie aus Python auf? D er erste Teil des Tutorials hat einen Überblick gegeben, was OpenCV kann und wie Gesichtserkennung grundsätzlich funktioniert. Er endete damit, wie sich die Computer-Vision-Bibliothek über ein simples import cv2 aus Python-Programmen heraus in IPython nutzen lässt [1]. Interessant ist nun, was sich an cv2. alles anhängen lässt. Im ersten Teil des Tutorials griff die Funktion Capture das Bild der Webcam ab und brachte es auf den Bildschirm. Aber natürlich bietet OpenCV eine Menge mehr Funktionen. OpenCV, C++ und die Python-Bindings Zunächst ein Paar Worte zum Thema Python und OpenCV. Die Bildverarbeitungsbibliothek ist in C++ implementiert. Über Bindings lassen sich die APIs auch aus anderen Sprachen ansprechen. Opencv gesichtserkennung python tutorials. Um C++-Funktionen aus Python heraus aufrufen zu können, erstellen Skripte aus den C++-Headern der Bibliothek automatisch Wrapper für alle Funktionen, die der Entwickler zum Exportieren markiert hat.
Dazu muss man jedoch einen Faktor angeben, um den das Bild nach jeder Iteration verändert werden soll, um Gesichter in anderen Größen zu finden. Außerdem lohnt es sich aus Geschwindigkeitsgründen evtl. eine minimale und eine maximale Größe anzugeben. def detect_faces ( img, cascade_fn = '/usr/share/opencv/haarcascades/', scaleFactor = 1. 1, minNeighbors = 4, minSize = ( 100, 100), maxSize = ( 2000, 2000), flags = cv. CV_HAAR_SCALE_IMAGE): cascade = cv2. CascadeClassifier ( cascade_fn) rects = cascade. detectMultiScale ( img, scaleFactor = scaleFactor, minNeighbors = minNeighbors, minSize = minSize, maxSize = maxSize, flags = flags) if len ( rects) == 0: return [] rects [:, 2:] += rects [:, : 2] return rects Die Funktion detect_faces erkennt Gesichter in einem Bild und gibt die Koordinaten der Eckpunkte aus. Anschließend werden diese Eckpunkte verwendet, um das Bild aus dem Gesamtbild zu extrahieren und an einem neuen Pfad abzuspeichern. Gesichtserkennung mit Python und OpenCV mit Webcam – Acervo Lima. Dazu wird eine Funktion crop angelegt. Diese erledigt auch die Umwandlung in Grauwerte und den Histogrammausgleich.
Zusatzaufgabe «Der Blick» Variante A Finde Augen und spiegle diese horizontal. () Variante B Finde ein Gesicht mit zwei Augen. Vertausche die beiden Augen! # andere Dinge erkennen Im Repo von OpenCV finden wir weitere Trainingsdaten für den Haar-Klassifikator: (opens new window). Gesichtserkennung mit OpenCV* | EF Informatik 2021. Einige Mögliche Anwendungsbeispiele: – Fussgänger erkennen für ein selbstfahrendes Auto – Bei Gesichtern ein Lächeln erkennen, z. b. für eine Kamera die erst auslöst wenn alle Personen lächeln. – hinzufügen zu unserer Gesichtserkennung um auch Personen von der Seite her zu erkennen. Aufgabe Wähle einen der im Repo verfügbaren Haar-Klassifikator aus und versuche damit eine Anwendung zu erstellen: passende Bilder sammeln das Python-Skript mit den neuen Trainingsdaten ausstatten Die Objekt-Erkennung testen und optimieren Etwas «sinnvolles» mit den erkannten Objekten anstellen Letzte Änderung: 10. 3. 2021, 15:01:19
$file $file done for file in todetectfaces/ *; do Die Erkennung mit scikit-learn ist dann ziemlich leicht. Man muss lediglich noch die Bilder in Vektoren umwandeln (d. alle Pixel eindimensional anordnen) und anschließend eine Hauptkomponentenzerlegung durchführen. Für letzteres gibt es glücklicherweise bereits Algorithmen, da dies tiefergehende Mathematik erfordern würde. Diese Hauptkomponentenzerlegung berechnet die Eigenfaces (d. die Referenzgesichter, aus denen später das Originalgesicht rekonstruiert werden soll). Hat man die Hauptkomponentenzerlegung berechnet, kann man alle Bilder auf diese Zerlegung transformieren und erhält die Gewichte jedes einzelnen Eigenface. Gesichtserkennung mit OpenCV und Python, Teil 1: OpenCV-Grundlagen | iX | Heise Magazine. Ähnliche Gesichter sollten hier ähnliche Gewichte haben (da sie denselben Referenzgesichern ähnlich sind), sodass die euklidische Distanz zwischen den Bildern als Ähnlichkeitsmaß ausreicht. Zusammengefasst sind also folgende Schritte nötig: Pixel der Bilder eindimensional anordnen Hauptkomponentenzerlegung berechnen Hauptkomponentenzerlegung auf jedes Bild anwenden Prüfen, welches Bild aus der bekannten Datenbank dem unbekannten Bild am ähnlichsten ist Korrigierte Version from composition import RandomizedPCA import numpy as np import glob import cv2 import math import def actor_from_filename ( filename): filename = os.
An dieser Stelle können sich je nach Computer Abweichungen bei den Kamera IDs ergeben! Es folgt eine While-Schleife, die mittels der Taste "q" beim Betrieb beendet werden kann. Wir können damit das Programm manuell jederzeit beenden. # Aufgreifen des Bildes pro Frame ret, frame = () Wir lesen in dieser Zeile jeden Frame Schritt für Schritt ein. Opencv gesichtserkennung python files. # Zuweisung der Farbe grau fuer Box Umrandung des Gesichts gray = tColor(frame, LOR_BGR2GRAY) Hier legen wir die Farbe grau für die Box fest, die während der Bildsequenzen um unser Gesicht herum eingeblendet wird. # Erkennung mehrerer Gesichter faces = tectMultiScale( gray, scaleFactor=1. 1, minNeighbors=5, minSize=(30, 30), SCADE_SCALE_IMAGE) Hier arbeitet die Gesichtserkennung mit dem Klassifikationsobjekt faceCascade und der Methode detectMultiScale. Es können mehrere Gesichter gleichzeitig erkannt werden. Die Argumente werden in der Dokumentation von OpenCV sehr gut erläutert. # Erzeugen eines Rechtecks fuer jedes der erkannten Gesichter for (x, y, w, h) in faces: ctangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) Die Bilder wurden erkannt und dem Objekt faces zugewiesen.
Es folgt nun das Anfügen eines Rechtsecks zu jedem Frame. # Ausgabe der Frames ('Video', frame) Im Anschluss werden die Frames als Video in einem Fenster ausgegeben. # Programm mit 'break' aus while-Schleife if cv2. waitKey(1) & 0xFF == ord('q'): break Sofern der Benutzer "q" drückt, springt das Programm aus der While-Schleife und beendet sich mit folgenden Anweisungen: lease() stroyAllWindows() Die Datei kann nun in der Konsole wie folgt aufgerufen werden: python Damit ist es nun möglich mit wenigen Zeilen Code sofort Gesichter in der Webcam zu erkennen. Viel Spaß beim Ausprobieren! T ipp: Du interessierst dich für Autonomes Fahren? Mein Artikel " Fünf Stufen des Autonomen Fahrens und warum Tesla den Wettlauf gewinnen wird " erklärt, warum der kalifornische Autohersteller im Entwicklungswettkampf der Sieger sein wird.