Inhaltsverzeichnis:

Gesichtserkennungsgerät! Python & Arduino - Gunook
Gesichtserkennungsgerät! Python & Arduino - Gunook

Video: Gesichtserkennungsgerät! Python & Arduino - Gunook

Video: Gesichtserkennungsgerät! Python & Arduino - Gunook
Video: 10 Great Artificial Intelligence projects using ESP32-CAM!!! 2024, November
Anonim
Image
Image
Gesichtserkennungsgerät! Python & Arduino
Gesichtserkennungsgerät! Python & Arduino
Gesichtserkennungsgerät! Python & Arduino
Gesichtserkennungsgerät! Python & Arduino

Von Techovator0819Mein Youtube-KanalFolgen Sie mehr vom Autor:

IoT: Wetterbox (mit benutzerdefinierten Alarmen und Timern)
IoT: Wetterbox (mit benutzerdefinierten Alarmen und Timern)
IoT: Wetterbox (mit benutzerdefinierten Alarmen und Timern)
IoT: Wetterbox (mit benutzerdefinierten Alarmen und Timern)
Der multifunktionale autonome Roboter: 'Asset'
Der multifunktionale autonome Roboter: 'Asset'
Der multifunktionale autonome Roboter: 'Asset'
Der multifunktionale autonome Roboter: 'Asset'

Über: Ich liebe es einfach, neue Dinge zu machen. Zum Beispiel Dinge, die sich mit Mikrocontrollern, Maschinenbau, Künstlicher Intelligenz, Informatik und allem, was mich interessiert, beschäftigen. Und hier finden Sie alle… Mehr über Techovator0819 »

Hallo alle da draußen, die dieses instructable lesen. Dies ist ein Gerät zur Gesichtsverfolgung, das mit einer Python-Bibliothek namens OpenCV arbeitet. CV steht für „Computer Vision“. Dann habe ich eine serielle Schnittstelle zwischen meinem PC und meinem Arduino UNO eingerichtet. Das bedeutet also, dass dies nicht nur mit Python funktioniert.

Dieses Gerät erkennt Ihr Gesicht im Rahmen und sendet dann bestimmte Befehle an den Arduino, um die Kamera so zu positionieren, dass sie im Rahmen bleibt! Hört sich cool an? Lass uns dann gleich reinspringen.

Lieferungen

1. Arduino UNO

2. 2 x Servomotoren (Alle Servomotoren sind in Ordnung, aber ich habe Tower Pro SG90 verwendet)

3. Python installieren

4. Installation von OpenCV

5. Web-Kamera

Schritt 1: Python und OpenCV installieren

Die Installation von Python ist ziemlich einfach!

www.python.org/downloads/

Sie können dem obigen Link folgen, um die Python-Version (Mac, Windows oder Linux) herunterzuladen, die am besten zu Ihnen passt (64 Bit oder 32 Bit). Der Rest des Installationsprozesses ist einfach und Sie werden durch die Benutzeroberfläche geführt.

Sobald Sie mit der Installation fertig sind, öffnen Sie Ihre Eingabeaufforderung und geben Sie Folgendes ein:

pip install opencv-python

Das sollte die openCV-Bibliothek installieren. Im Falle einer Fehlersuche können Sie DIESE Seite besuchen.

Nachdem wir die Umgebung und alle Voraussetzungen eingerichtet haben, sehen wir uns an, wie wir dies tatsächlich erstellen können!

Schritt 2: Was sind haarähnliche Merkmale?

Haarähnliche Merkmale sind Merkmale eines digitalen Bildes. Der Name kommt von Haar Wavelets. Dies sind eine Familie von quadratischen Wellen, die verwendet werden, um Merkmale in einem digitalen Bild zu identifizieren. Haarkaskaden ist im Grunde ein Klassifikator, der uns hilft, Objekte (in unserem Fall Gesichter) anhand der haarähnlichen Merkmale zu erkennen.

In unserem Fall verwenden wir der Einfachheit halber vortrainierte Haarkaskaden, um Gesichter zu identifizieren. Sie können DIESEM Link einer Github-Seite folgen und die XML-Datei für die Haarkaskade herunterladen.

1. Klicken Sie auf 'haarcascade_frontalface_alt.xml'

2. Klicken Sie oben rechts im Codefenster auf die Schaltfläche 'Raw'.

3. Es leitet Sie zu einer anderen Seite mit nur Text weiter.

4. Klicken Sie mit der rechten Maustaste und klicken Sie auf "Speichern unter…".

5. Speichern Sie es im selben Verzeichnis oder Ordner wie den Python-Code, den Sie gerade schreiben.

Schritt 3: Codieren in Python

CV2 importieren

import numpy as np import serial import time

Wir importieren alle benötigten Bibliotheken.

ard = serial. Serial("COM3", 9600)

Wir erstellen ein serielles Objekt namens 'ard'. Als Parameter geben wir auch den Portnamen und die BaudRate an.

face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml')

Wir erstellen ein weiteres Objekt für unsere Haar Cascade. Stellen Sie sicher, dass die HaarCascade-Datei im selben Ordner wie dieses Python-Programm verbleibt.

vid = cv2. VideoCapture(0)

Wir erstellen ein Objekt, das Videos von der Webcam aufnimmt. 0 als Parameter bedeutet die erste an meinem PC angeschlossene Webcam.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

während Wahr:

_, frame = vid.read()#liest den aktuellen Frame in die Variable frame grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#konvertiert Frame -> Graustufenbild #die folgende Zeile erkennt Gesichter. #Der erste Parameter ist das Bild, auf dem Sie erkennen möchten #minSize=() gibt die Mindestgröße des Gesichts in Pixeln an #Klicken Sie auf den obigen Link, um mehr über die Kaskadenklassifizierung zu erfahren Gesichter = face_cascade.detectMultiScale(gray, minSize =(80, 80), minNeighbors=3) #A für Schleife zum Erkennen der Gesichter. für (x, y, w, h) in Flächen: cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)#zieht ein Rechteck um the face Xpos = x+(w/2)#berechnet die X-Koordinate der Gesichtsmitte. Ypos = y+(h/2)#berechnet die Y-Koordinate der Gesichtsmitte, wenn Xpos > 280: #Die folgenden Codeblöcke prüfen, ob das Gesicht ard.write('L'.encode()) ist #on links, rechts, oben oder unten in Bezug auf time.sleep(0.01) #Mitte des Frames. elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos < 200: ard.write('U'.encode()) time.sleep(0.01) else: ard.write ('S'.encode()) time.sleep(0.01) break cv2.imshow('frame', frame)#zeigt den Frame in einem separaten Fenster an. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #wenn 'q' auf der Tastatur gedrückt wird, wird die while-Schleife verlassen. brechen

cv2.destroyAllWindows() #schließt alle Fenster

ard.close() #schließt die serielle Kommunikation

vid.release() #beendet den Empfang von Videos von der Webcam.

Schritt 4: Programmierung des Arduino

Fühlen Sie sich frei, das Programm gemäß Ihrem Hardware-Setup an Ihre Bedürfnisse anzupassen.

#enthalten

Servo-ServoX;

Servo-ServoY;

intx = 90;

int y = 90;

Leere Einrichtung () {

// Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen: Serial.begin (9600); servoX.attach(9); servoY.attach(10); servoX.write(x); servoY.write(y); Verzögerung (1000); }

Zeicheneingabe = ""; //serielle Eingabe wird in dieser Variablen gespeichert

Leere Schleife () {

// Geben Sie Ihren Hauptcode hier ein, um ihn wiederholt auszuführen: if (Serial.available ()) { // prüft, ob sich Daten im seriellen Puffer befinden input = Serial.read (); // liest die Daten in eine Variable if (input == 'U') {servoY.write (y+1); // passt den Servowinkel entsprechend der Eingabe an y + = 1; // aktualisiert den Wert des Winkels} else if (input == 'D') {servoY.write (y-1); y –= 1; aufrechtzuerhalten. Sonst {servoY.write (y); aufrechtzuerhalten. Wenn (Eingabe == 'L') {servoX.write (x-1); x –= 1; aufrechtzuerhalten. Sonst if (input == 'R') {servoX.write (x+1); x += 1; aufrechtzuerhalten. Sonst {servoX.write (x); } Eingabe = ""; //löscht die Variable } //Prozess wiederholt sich!!:) }

Schritt 5: Fazit

Dies ist eine schöne und interaktive Möglichkeit, Computer Vision in Ihre Arduino-Projekte zu integrieren. Computer Vision macht eigentlich ziemlich viel Spaß. Und ich hoffe wirklich, dass es euch gefallen hat. Wenn ja, lass es mich in den Kommentaren wissen. Und abonniere bitte meinen Youtube-Kanal. Danke im Voraus <3<3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Empfohlen: