Innholdsfortegnelse:
- Trinn 1: Ting du trenger:
- Trinn 2: Konfigurere Python-miljø:
- Trinn 3: Python Script:
- Trinn 4: Arduino -kode:
- Trinn 5: Pan-Tilt-mekanisme:-
- Trinn 6: Opprette tilkoblinger:
- Trinn 7: TESTING:
Video: ANSIKTSSPORING MED ARDUINO !!!: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
I en tidligere instruks delte jeg hvordan du kan kommunisere mellom Arduino og Python ved å bruke 'pyserial' modul og kontrollere en LED. Hvis du ikke har sett det, sjekk det ut her: KOMMUNIKASJON MELLOM ARDUINO & PYTHON!
Og hvordan du kan oppdage fargen på et objekt og spore det på skjermen, sjekk det her: FARGEDETEKSJON MED OPENCV OG PYTHON.
I denne instruksen vil jeg vise deg hvordan du sporer ansikter ved hjelp av Arduino & Python og får kameraet til å følge ansiktet. Dette kan høres vanskelig ut, men tro meg det er ikke. Alt du trenger er grunnleggende kunnskap om Arduino og Python.
Så la oss komme i gang …
Trinn 1: Ting du trenger:
Kravene er minimum. Her har jeg gitt en deleliste over alt du trenger:
Krav til maskinvare:
- Arduino UNO (Amazon USA / Amazon EU)
- Webkamera (Amazon USA / Amazon EU)
- Servoer x 2 (Amazon USA / Amazon EU)
- Brødbrett (Amazon USA / Amazon EU)
- Servo Pan Tilt Kit (Amazon USA / Amazon EU)
Programvarekrav:
- Python 2.7 (Bør installeres, Linux OS har det vanligvis forhåndsinstallert)
- OpenCV (Du kan laste den ned separat eller installere ved hjelp av 'pip install' Forklar nærmere)
- pyserial (kan installeres med pip)
- numpy.
- Haarcascade.
Etter at alt er samlet kan vi gå videre til installasjonstrinnet …
Trinn 2: Konfigurere Python-miljø:
Installere Python:
Så først trenger vi Python 2.7 i gang. For å gjøre dette må du først laste ned og installere python 2.7.14. For å sjekke om den er riktig installert Gå til: Windows Søk >> Skriv "IDLE" >> Trykk Enter. Et Python -skall skal dukke opp.
ELLER
Skriv "CMD" i søket og trykk enter for å åpne ledeteksten. I CMD -typen >> python og trykk enter, skal Python -grensesnittet vises.
Hvis du ser en feil i CMD, Ikke få panikk, du må sannsynligvis angi miljøvariabel. Du kan følge denne opplæringen her for å sette opp miljøvariabel.
Installere 'pyserial', 'OpenCV' og 'numpy' i python:
For å installere disse modulene bruker vi pip install, Åpne først CMD og skriv inn følgende koder:-
pip installer serie
pip install opencv-python> pip install numpy
disse kommandoene vil installere de nødvendige modulene. Nå kan vi gå til kodingsdelen …
Trinn 3: Python Script:
Før du begynner å skrive kode, må du først lage en ny mappe, da all koden må lagres i samme mappe. Så opprett en ny mappe, navngi den hva du vil. og last ned 'Haarcascade' nedenfra og lim den inn i mappen.
Åpne nå notisblokken og skriv skriptet gitt nedenfor, Lagre det som 'face.py' i samme mappe som haarcascade. (Du kan laste ned koden jeg har gitt filen nedenfor):
#importer alle nødvendige moduler
import numpy as np import seriell importtid import sys import cv2 #Setup Kommunikasjonsbane for arduino (I stedet for 'COM5' sett porten som arduinoen er koblet til) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Connected to arduino …") #importing av Haarcascade for ansiktsgjenkjenning face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #To fange videostrømmen fra webkamera. cap = cv2. VideoCapture (0) #Les bildet som er tatt, konverter det til grått bilde og finn ansikter 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) ansikter = face_cascade.detectMultiScale (grå, 1,3) # oppdag ansiktet og lag et rektangel rundt det. for (x, y, w, h) i ansikter: 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)) # Senter for roi (rektangel) xx = int (x+(x+h))/2 åå = int (y+(y+w))/2 utskrift (xx) utskrift (åå) senter = (xx, åå) # sende data til arduino -utskrift ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Vis strømmen. cv2.imshow ('img', img) #Hit 'Esc' for å avslutte kjøringen k = cv2.waitKey (30) & 0xff if k == 27: break
Når dette er gjort, fortsett å skrive koden for arduino …
Trinn 4: Arduino -kode:
Etter at python -skriptet er klart trenger vi arduino -skisse for å kontrollere servoen. Se koden nedenfor, lim den inn i Arduino IDE og lagre den som 'servo.ino' i samme mappe som face.py og haarcascade. last opp koden og gå videre til neste trinn for å opprette tilkoblinger.
(Nedlastbar fil gitt nedenfor)
#inkludere
Servo servoVer; // Vertikal Servo Servo servoHor; // Horisontal servo int x; int y; int prevX; int tidligere; ugyldig oppsett () {Serial.begin (9600); servoVer.attach (5); // Fest vertikal servo til pin 5 servoHor.attach (6); // Fest horisontal servo til pin 6 servoVer.write (90); servoHor.write (90); } ugyldig Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = kart (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = maks (servoX, 70); servoY = min (servoY, 179); servoY = maks (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} mens (Serial.available ()> 0) {Serial.read (); }}}
Trinn 5: Pan-Tilt-mekanisme:-
Jeg har brukt et lett tilgjengelig sett til Pan-Tilt. Hvis du vil, kan du lage en selv ved hjelp av tre/plast eller til og med 3D -utskrift.
Den jeg brukte er ganske billig, og veldig enkel å montere. Men hvis du vil ha instruksjoner om hvordan du gjør det, kan du finne det her.
Trinn 6: Opprette tilkoblinger:
Kretsen er ganske enkel. Bare fest to servoer til arduino.
- Vertikal til Pin 5
- Horisontal til Pin 6
- Strøm til +5V
- Bakken til GND
Sjekk kretsdiagrammet for referanse.
Trinn 7: TESTING:
- Etter at alt er gjort er det siste du må gjøre å teste om det fungerer. For å teste må du først kontrollere at servoer er riktig koblet til arduino og at skisse er lastet opp.
- Etter at skissen er lastet opp, må du lukke IDE slik at porten er gratis å koble til python.
- Åpne nå 'face.py' med Python IDLE og trykk 'F5' for å kjøre koden. Det vil ta noen sekunder å koble til arduino, og da bør du kunne se et vindu som strømmer webkameraet. Nå vil koden oppdage ansiktet ditt, og servoene vil spore det spore det.
- Servoen skal bevege seg mens du flytter objektet. Nå er det bare å feste kameraet til servoene, så det vil bevege seg sammen med servoer.
Takk skal du ha.
Anbefalt:
Ansiktssporing og smiloppdagende Halloween -roboter: 8 trinn (med bilder)
Ansiktssporing og smiloppdagende Halloween -roboter: Halloween kommer! Vi bestemte oss for å bygge noe kult. Møt Ghosty og Skully roboter. De kan følge ansiktet ditt, og de vet når du smiler for å le med deg! Dette prosjektet er et annet eksempel på bruk av iRobbie -appen som konverterer iPhone til
PWM Med ESP32 - Dimmende LED med PWM på ESP 32 Med Arduino IDE: 6 trinn
PWM Med ESP32 | Dimmende LED med PWM på ESP 32 Med Arduino IDE: I denne instruksen vil vi se hvordan du genererer PWM -signaler med ESP32 ved hjelp av Arduino IDE & PWM brukes i utgangspunktet til å generere analog utgang fra hvilken som helst MCU, og den analoge utgangen kan være alt mellom 0V til 3,3V (i tilfelle esp32) & fra
Teppe med sensorer/ RF -kommunikasjon med Arduino Micro: 4 trinn (med bilder)
Teppe med sensorer/ RF -kommunikasjon med Arduino Micro: Jeg avsluttet nylig installasjonen Like variert, som er laget av en serie lamper som reagerer på sensorene plassert i et teppe under lampene. Her er hvordan jeg laget teppet med trykksensorer. Jeg håper du finner det nyttig
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
Tiggerobot med ansiktssporing og kontroll av Xbox -kontroller - Arduino: 9 trinn (med bilder)
Tiggerobot med ansiktssporing og kontroll av Xbox -kontroller - Arduino: Vi skal lage en tiggerobot. Denne roboten vil prøve å irritere eller få oppmerksomhet fra forbipasserende. Den vil oppdage ansiktene deres og prøve å skyte lasere på dem. Hvis du gir roboten en mynt, vil han synge en sang og danse. Roboten trenger en