Indholdsfortegnelse:
- Trin 1: Ting du skal bruge:
- Trin 2: Opsætning af Python-miljø:
- Trin 3: Python Script:
- Trin 4: Arduino -kode:
- Trin 5: Pan-Tilt-mekanisme:-
- Trin 6: Opret forbindelser:
- Trin 7: TESTNING:
Video: ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
I en tidligere instruerbar delte jeg, hvordan du kan kommunikere mellem Arduino og Python ved hjælp af 'pyserial' -modul og styre en LED. Hvis du ikke har set det, så tjek det ud her: KOMMUNIKATION MELLEM ARDUINO & PYTHON!
Og hvordan du kan registrere farve på et objekt og spore det på skærmen, tjek det her: FARVEDETEKTION VED AT BRUGE OPENCV OG PYTHON.
I denne Instructable vil jeg vise dig, hvordan du sporer ansigter ved hjælp af Arduino & Python og får kameraet til at følge ansigtet. Dette lyder måske svært, men tro mig, det er det ikke. Alt du behøver er grundlæggende viden om Arduino og Python.
Så lad os komme i gang …
Trin 1: Ting du skal bruge:
Kravene er minimale. Her har jeg givet en deleliste over alt, hvad du har brug for:
Krav til hardware:
- Arduino UNO (Amazon USA / Amazon EU)
- Webkamera (Amazon USA / Amazon EU)
- Servoer x 2 (Amazon USA / Amazon EU)
- Breadboard (Amazon USA / Amazon EU)
- Servo Pan Tilt Kit (Amazon USA / Amazon EU)
Softwarekrav:
- Python 2.7 (Skal installeres, Linux OS har det normalt forudinstalleret)
- OpenCV (Du kan downloade det separat eller installere ved hjælp af 'pip install' Forklaret yderligere)
- pyserial (Kan installeres med pip)
- numpy.
- Haarcascade.
Når alt er samlet, kan vi gå videre til installationstrinnet …
Trin 2: Opsætning af Python-miljø:
Installation af Python:
Så først skal vi bruge Python 2.7 og køre. For at gøre dette skal du først downloade og installere python 2.7.14. For at kontrollere, om den er installeret korrekt Gå til: Windows Søg >> Skriv "IDLE" >> Hit Enter. En Python Shell skal dukke op.
ELLER
I søgetypen 'CMD' og tryk enter for at åbne kommandoprompt. I CMD -typen >> python og tryk enter, skal Python -grænsefladen vises.
Hvis du ser en fejl i CMD, skal du ikke gå i panik, du skal sandsynligvis indstille miljøvariabel. Du kan følge denne vejledning her for at konfigurere miljøvariabel.
Installation af 'pyserial', 'OpenCV' og 'numpy' i python:
For at installere disse moduler bruger vi pip install, Åbn først CMD og indtast følgende koder:-
pip installer serie
pip installer opencv-python> pip installer numpy
disse kommandoer installerer de nødvendige moduler. Nu kan vi gå til kodningsdelen …
Trin 3: Python Script:
Før du begynder at skrive kode, skal du først lave en ny mappe, da al koden skal gemmes i den samme mappe. Så opret en ny mappe, navngiv den, hvad du vil. og download 'Haarcascade' nedenunder og indsæt den i mappen.
Åbn nu notesblok og skriv scriptet nedenfor, gem det som 'face.py' i den samme mappe som haarcascade. (Du kan downloade koden, jeg har givet filen herunder):
#importer alle de nødvendige moduler
import numpy as np import seriel importtid import sys import cv2 #Setup Kommunikationssti for arduino (I stedet for 'COM5' skal du sætte den port, som din arduino er forbundet til) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Tilsluttet arduino …") #import af Haarcascade til ansigtsdetektering face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Til at optage videostrømmen fra webcam. cap = cv2. VideoCapture (0) #Læs det optagne billede, konverter det til gråt billede og find ansigter, mens 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) grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansigter = face_cascade.detectMultiScale (grå, 1,3) # registrer ansigtet og lav et rektangel omkring det. for (x, y, w, h) i ansigter: cv2.rektangel (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grå [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)) # Center for roi (rektangel) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # sender data til arduino print ("Center for rektangel er:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Viser strømmen. cv2.imshow ('img', img) #Hit 'Esc' for at afslutte udførelsen k = cv2.waitKey (30) & 0xff if k == 27: break
Når dette er gjort, skal du fortsætte med at skrive koden til arduino …
Trin 4: Arduino -kode:
Efter at python -scriptet er klar, har vi brug for arduino sketch for at styre servoen. Se koden herunder, indsæt den i Arduino IDE og gem den som 'servo.ino' i den samme mappe som face.py og haarcascade. uploade koden og gå videre til det næste trin for at oprette forbindelserne.
(Filen kan downloades nedenfor)
#omfatte
Servo servoVer; // Lodret Servo Servo servoHor; // Horisontal Servo int x; int y; int prevX; int tidligere; ugyldig opsætning () {Serial.begin (9600); servoVer.attach (5); // Fastgør lodret servo til pin 5 servoHor.attach (6); // Fastgør vandret servo til pin 6 servoVer.write (90); servoHor.write (90); } ugyldig Pos () {hvis (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); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); hvis (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} mens (Serial.available ()> 0) {Serial.read (); }}}
Trin 5: Pan-Tilt-mekanisme:-
Jeg har brugt et let tilgængeligt kit til Pan-Tilt. Hvis du vil, kan du selv lave en ved hjælp af træ/plastik eller endda 3D -print.
Den jeg brugte er ret billig og meget let at samle. Men hvis du vil have instruktioner om, hvordan du gør det, kan du finde det her.
Trin 6: Opret forbindelser:
Kredsløbet er ret simpelt. Bare vedhæft to servoer til arduino.
- Lodret til Pin 5
- Vandret til Pin 6
- Strøm til +5V
- Jord til GND
Kontroller kredsløbsdiagrammet for reference.
Trin 7: TESTNING:
- Når alt er gjort, er det sidste, at teste, om det virker. For at teste først skal du sørge for, at servoer er korrekt forbundet til arduino, og at skitse uploades.
- Når skitsen er uploadet, skal du lukke IDE'en, så porten er gratis at oprette forbindelse til python.
- Åbn nu 'face.py' med Python IDLE, og tryk på 'F5' for at køre koden. Det vil tage et par sekunder at oprette forbindelse til arduino, og så skulle du kunne se et vindue, der streamer webkameraet. Nu vil koden registrere dit ansigt, og servoer vil spore det spore det.
- Servoen skal bevæge sig, mens du flytter objektet. Nu skal du bare vedhæfte kameraet til servoerne, så det vil bevæge sig sammen med servoer.
Tak skal du have.
Anbefalede:
DESINFEKTIONSMASKINSIMULERING VED AT BRUGE TINKERCAD: 6 trin
DESINFEKTIONSMASKINSIMULERING VED AT BRUGE TINKERCAD: I denne uigennemsigtige vil vi se, hvordan vi laver en simulering af desinfektionsmaskine, Contact less Automatic Sanitizer er en desinfektionsmaskine, fordi vi ikke bruger vores hænder til at betjene maskinen i stedet for nærhedens infrarøde sensor
MQ7-POLLUTION OVERVÅGNING VED AT BRUGE TALE OG NODEMCU: 4 trin
MQ7-POLLUTION OVERVÅGNING VED AT BRUGE TALE OG NODEMCU: Forureningen er et stort problem i vores nutidens verden. Men hvordan vi kan overvåge vores forurening i nærheden, nu er det meget let SÅ KOMMER VI I GANG:
ULTRASONISK RADAR SYSTEM VED AT BRUGE ARDUINO: 3 trin
ULTRASONISK RADARSYSTEM VED AT BRUGE ARDUINO: Det kredsløb, der er beskrevet her, viser, hvordan et ultralydbaseret radarsystem fungerer. Det bruger ultralydssensor til at registrere et objekt og måle dets afstand og roterer i henhold til servomotor. Rotationsvinklen vises på en 16x2 LCD -skærm
Ansigtssporing og smildetektering Halloween -robotter: 8 trin (med billeder)
Face Tracking og Smile Detecting Halloween Robots: Halloween kommer! Vi besluttede at bygge noget fedt. Mød Ghosty og Skully robotter. De kan følge dit ansigt, og de ved, når du smiler til at grine med dig! Dette projekt er et andet eksempel på at bruge iRobbie -appen, der konverterer iPhone til
RETNING OG HASTIGHEDSKONTROL AF DC -MOTOR VED AT BRUGE LABVIEW (PWM) OG ARDUINO: 5 trin
DIREKTION OG HASTIGHEDSKONTROL AF DC -MOTOR VED AT BRUGE LABVIEW (PWM) OG ARDUINO: Hej fyre, først og fremmest undskyld mit sjove engelsk. I denne instruktive vil jeg vise dig, hvordan du styrer en DC -motorens hastighed ved hjælp af labview Lad os komme i gang