Inhaltsverzeichnis:

FACE TRACKING MIT ARDUINO !!! - Gunook
FACE TRACKING MIT ARDUINO !!! - Gunook

Video: FACE TRACKING MIT ARDUINO !!! - Gunook

Video: FACE TRACKING MIT ARDUINO !!! - Gunook
Video: A.I Face recognition Door Unlock 🔓 #shorts #artificialintelligence 2024, Juli
Anonim
FACE TRACKING MIT ARDUINO !!!
FACE TRACKING MIT ARDUINO !!!

In einem früheren anweisbaren habe ich geteilt, wie Sie zwischen Arduino und Python mit dem 'pyserial' -Modul kommunizieren und eine LED steuern können. Wenn Sie es noch nicht gesehen haben, schauen Sie hier: KOMMUNIKATION ZWISCHEN ARDUINO & PYTHON !

Und wie Sie die Farbe eines Objekts erkennen und auf dem Bildschirm verfolgen können, überprüfen Sie das hier: FARBERKENNUNG MIT OPENCV UND PYTHON.

In diesem Instructable zeige ich Ihnen, wie Sie Gesichter mit Arduino & Python verfolgen und die Kamera dem Gesicht folgen lassen. Das mag schwierig klingen, aber glauben Sie mir, es ist nicht. Alles, was Sie brauchen, sind Grundkenntnisse in Arduino und Python.

Also lasst uns anfangen…

Schritt 1: Dinge, die Sie benötigen:

Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen
Dinge, die Sie brauchen

Die Anforderungen sind minimal. Hier habe ich eine Stückliste von allem bereitgestellt, was Sie brauchen:

Hardware-Anforderung:

  • Arduino UNO (Amazon US / Amazon EU)
  • Webcam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Steckbrett (Amazon US / Amazon EU)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Software-Anforderung:

  1. Python 2.7 (Sollte installiert sein, Linux-Betriebssysteme haben es normalerweise vorinstalliert)
  2. OpenCV (Sie können es separat herunterladen oder mit 'pip install' installieren. Weiter erklärt)
  3. pyserial (Kann mit pip installiert werden)
  4. nuffig.
  5. Haarkaskade.

Nachdem alles zusammengetragen wurde, können wir mit dem Installationsschritt fortfahren…

Schritt 2: Python-Umgebung einrichten:

Python-Umgebung einrichten
Python-Umgebung einrichten
Python-Umgebung einrichten
Python-Umgebung einrichten
Python-Umgebung einrichten
Python-Umgebung einrichten

Python installieren:

Zuerst müssen wir also Python 2.7 zum Laufen bringen. Um dies zu tun, laden Sie zuerst Python 2.7.14 herunter und installieren Sie es. Um zu überprüfen, ob es richtig installiert ist, gehen Sie zu: Windows-Suche >> Geben Sie "IDLE" ein >> Drücken Sie die Eingabetaste. Eine Python-Shell sollte auftauchen.

ODER

Geben Sie in der Suche "CMD" ein und drücken Sie die Eingabetaste, um die Eingabeaufforderung zu öffnen. Geben Sie in CMD >> Python ein und drücken Sie die Eingabetaste, die Python-Schnittstelle sollte anzeigen.

Wenn Sie einen Fehler in CMD sehen, keine Panik, müssen Sie wahrscheinlich die Umgebungsvariable setzen. Sie können diesem Tutorial folgen Hier können Sie die Umgebungsvariable einrichten.

'pyserial', 'OpenCV' und 'numpy' in Python installieren:

Um diese Module zu installieren, verwenden wir pip install, Öffnen Sie zuerst CMD und geben Sie die folgenden Codes ein:

pip install seriell

pip install opencv-python >pip install numpy

Mit diesen Befehlen werden die erforderlichen Module installiert. Jetzt können wir zum Codierungsteil übergehen…

Schritt 3: Python-Skript:

Python-Skript
Python-Skript

Bevor Sie mit dem Schreiben von Code beginnen, müssen Sie zunächst einen neuen Ordner erstellen, da der gesamte Code in demselben Ordner gespeichert werden muss. Erstellen Sie also einen neuen Ordner, benennen Sie ihn nach Belieben. und laden Sie die 'Haarcascade' von unten herunter und fügen Sie sie in den Ordner ein.

Öffnen Sie nun den Notizblock und schreiben Sie das unten angegebene Skript. Speichern Sie es als 'face.py' im selben Ordner wie haarcascade. (Sie können den Code herunterladen, den ich in der Datei unten bereitgestellt habe):

#importiere alle benötigten Module

import numpy as np import serial import time import sys import cv2 #Setup Kommunikationspfad für arduino (Anstelle von 'COM5' setzen Sie den Port, mit dem Ihr arduino verbunden ist) arduino = serial. Serial('COM5', 9600) time.sleep (2) print("Connected to arduino…") #Importieren der Haarcascade für die Gesichtserkennung face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #Um den Videostream von der Webcam aufzunehmen. cap = cv2. VideoCapture(0) #Lesen Sie das aufgenommene Bild, konvertieren Sie es in ein Graubild und finden Sie Gesichter während 1: ret, img = cap.read() cv2.resizeWindow('img', 500, 500) cv2.line(img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line(img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle(img, (250, 250), 5, (255, 255, 255), -1) grau = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) Gesichter = face_cascade.detectMultiScale(gray, 1.3) # Erkenne das Gesicht und bilde ein Rechteck darum. für (x, y, w, h) in Flächen: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grau[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] arr = {y:y+h, x:x+w} print (arr) print ('X:' +str(x)) print ('Y:'+str(y)) print ('x+w:' +str(x+w)) print ('y+h:' +str(y+h)) # Zentrum von roi (Rechteck) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # Senden von Daten an Arduino print("Center of Rectangle is:", center) data = "X{0:d}Y{1:d}Z".format(xx, yy) print ("output = '" +data+ "'") arduino.write(data) #Zeige den Stream an. cv2.imshow('img', img) #Hit 'Esc' um die Ausführung zu beenden k = cv2.waitKey(30) & 0xff if k == 27: break

Sobald dies erledigt ist, schreiben Sie den Code für arduino…

Schritt 4: Arduino-Code:

Arduino-Code
Arduino-Code

Nachdem das Python-Skript fertig ist, benötigen wir eine Arduino-Skizze, um das Servo zu steuern. Beziehen Sie sich auf den folgenden Code, fügen Sie ihn in die Arduino IDE ein und speichern Sie ihn als 'servo.ino' im selben Ordner wie face.py und haarcascade. Laden Sie den Code hoch und fahren Sie mit dem nächsten Schritt fort, um die Verbindungen herzustellen.

(Herunterladbare Datei unten angegeben)

#enthalten

Servo-ServoVer; // Vertikales Servo Servo servoHor; // Horizontaler Servo int x; int y; int prevX; int prevY; Void setup () { Serial.begin (9600); servoVer.attach(5); // Vertikalen Servo an Pin 5 anbringen servoHor.attach (6); // Horizontales Servo an Pin 6 anschließen servoVer.write (90); servoHor.write (90); aufrechtzuerhalten. Void Pos() { if (prevX!= x || prevY!= y) {int servoX = map(x, 600, 0, 70, 179); int servoY = map(y, 450, 0, 179, 95); servoX = min(servoX, 179); servoX = max(servoX, 70); servoY = min(servoY, 179); servoY = max(servoY, 95); servoHor.write (servoX); servoVer.write (servoY); aufrechtzuerhalten. aufrechtzuerhalten. if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos(); } } while (Serial.available () > 0) { Serial.read (); } } }

Schritt 5: Pan-Tilt-Mechanismus:-

Pan-Tilt-Mechanismus
Pan-Tilt-Mechanismus
Pan-Tilt-Mechanismus
Pan-Tilt-Mechanismus

Ich habe ein leicht verfügbares Kit für den Pan-Tilt verwendet. Wenn Sie möchten, können Sie einen aus Holz / Kunststoff selbst herstellen oder sogar einen 3D-Druck herstellen.

Das von mir verwendete ist ziemlich billig und sehr einfach zu montieren. Wenn Sie jedoch eine Anleitung dazu benötigen, finden Sie sie hier.

Schritt 6: Verbindungen herstellen:

Verbindungen herstellen
Verbindungen herstellen
Verbindungen herstellen
Verbindungen herstellen

Die Schaltung ist ziemlich einfach. Schließen Sie einfach zwei Servos an Arduino an.

  1. Vertikal zu Pin 5
  2. Horizontal zu Pin 6
  3. Leistung auf +5V
  4. Masse zu GND

Überprüfen Sie den Schaltplan als Referenz.

Schritt 7: TESTEN:

  • Nachdem alles erledigt ist, müssen Sie als letztes testen, ob es funktioniert. Um zuerst zu testen, stellen Sie sicher, dass die Servos richtig mit Arduino verbunden sind und die Skizze hochgeladen wird.
  • Stellen Sie nach dem Hochladen der Skizze sicher, dass Sie die IDE schließen, damit der Port frei mit Python verbunden werden kann.
  • Öffnen Sie nun 'face.py' mit Python IDLE und drücken Sie 'F5', um den Code auszuführen. Es dauert ein paar Sekunden, um eine Verbindung zu arduino herzustellen, und dann sollten Sie ein Fenster sehen können, in dem die Webcam gestreamt wird. Jetzt erkennt der Code Ihr Gesicht und die Servos verfolgen es.
  • Der Servo sollte sich bewegen, wenn Sie das Objekt bewegen. Befestigen Sie nun einfach die Kamera an den Servos, damit sie sich mit den Servos bewegt.

Dankeschön.

Empfohlen: