Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Python und OpenCV installieren
- Schritt 2: Was sind haarähnliche Merkmale?
- Schritt 3: Codieren in Python
- Schritt 4: Programmierung des Arduino
- Schritt 5: Fazit
Video: Gesichtserkennungsgerät! Python & Arduino - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Von Techovator0819Mein Youtube-KanalFolgen Sie mehr vom Autor:
Ü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:
So erstellen Sie Ihre erste einfache Software mit Python – wikiHow
So erstellen Sie Ihre erste einfache Software mit Python: Hallo, willkommen zu diesem Instructables. Hier werde ich erzählen, wie Sie Ihre eigene Software erstellen. Ja, wenn Sie eine Idee haben… aber wissen, wie Sie neue Dinge umsetzen können oder daran interessiert sind, Neues zu schaffen, dann ist es das Richtige für Sie
Temperatur CubeSat Ben & Kaiti & Q Stunde 1: 8 Schritte
Temperatur-CubeSat Ben & Kaiti & Q Stunde 1: Wollten Sie schon immer etwas selbst herstellen, das ins All geschickt werden kann und die Temperatur eines anderen Planeten misst? In unserem Physikunterricht an der High School wurden wir beauftragt, einen CubeSat mit einem funktionierenden Arduino mit der Hauptfrage zu bauen, wie können wir
6502 & 6522 Minimal Computer (mit Arduino MEGA) Teil 2: 4 Schritte
6502 & 6522 Minimal Computer (mit Arduino MEGA) Teil 2: Nach meinem vorherigen Instructable habe ich jetzt den 6502 auf eine Streifenplatine gelegt und einen 6522 Versatile Interface Adapter (VIA) hinzugefügt. Auch hier verwende ich eine WDC-Version des 6522, da sie perfekt zu ihrem 6502 passt. Diese neuen c
ARDUINO & GENUINO UNO : 7 Schritte
ARDUINO & GENUINO UNO . ATmega328. توفر هذه الدارة منافذ لتوصيل المكونات الالكترونية كالمجسات الى المتحكم مباشره عن طريق 14 (مدخل | مخرج)
$3 & 3 Steps Laptopständer (mit Lesebrille & Stiftablage): 5 Schritte
3 $ & 3 Steps Laptopständer (mit Lesebrille & Stiftablage): Dieser $ 3 & Der Laptopständer mit 3 Schritten kann innerhalb von 5 Minuten hergestellt werden. Es ist sehr stark, leicht und kann zusammengeklappt werden, um es überall hin mitzunehmen