Innholdsfortegnelse:

ANSIKTSSPORING MED ARDUINO !!!: 7 trinn
ANSIKTSSPORING MED ARDUINO !!!: 7 trinn

Video: ANSIKTSSPORING MED ARDUINO !!!: 7 trinn

Video: ANSIKTSSPORING MED ARDUINO !!!: 7 trinn
Video: Leap Motion SDK 2024, November
Anonim
ANSIKTSSPORING MED ARDUINO !!!
ANSIKTSSPORING MED ARDUINO !!!

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:

Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger
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:

  1. Python 2.7 (Bør installeres, Linux OS har det vanligvis forhåndsinstallert)
  2. OpenCV (Du kan laste den ned separat eller installere ved hjelp av 'pip install' Forklar nærmere)
  3. pyserial (kan installeres med pip)
  4. numpy.
  5. Haarcascade.

Etter at alt er samlet kan vi gå videre til installasjonstrinnet …

Trinn 2: Konfigurere Python-miljø:

Sette opp Python-miljø
Sette opp Python-miljø
Sette opp Python-miljø
Sette opp Python-miljø
Sette opp Python-miljø
Sette opp 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:

Python Script
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:

Arduino -kode
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:-

Pan-Tilt-mekanisme
Pan-Tilt-mekanisme
Pan-Tilt-mekanisme
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:

Opprette tilkoblinger
Opprette tilkoblinger
Opprette tilkoblinger
Opprette tilkoblinger

Kretsen er ganske enkel. Bare fest to servoer til arduino.

  1. Vertikal til Pin 5
  2. Horisontal til Pin 6
  3. Strøm til +5V
  4. 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: