Sisällysluettelo:

KASVON SEURANTA ARDUINOA KÄYTTÄMÄLLÄ: 7 vaihetta
KASVON SEURANTA ARDUINOA KÄYTTÄMÄLLÄ: 7 vaihetta

Video: KASVON SEURANTA ARDUINOA KÄYTTÄMÄLLÄ: 7 vaihetta

Video: KASVON SEURANTA ARDUINOA KÄYTTÄMÄLLÄ: 7 vaihetta
Video: DJI Osmo Pocket: KAIKKI epämukavat totuudet 2024, Heinäkuu
Anonim
KASVOJEN SEURANTA ARDUINOA KÄYTÄN !!!
KASVOJEN SEURANTA ARDUINOA KÄYTÄN !!!

Edellisessä ohjeessa kerroin, kuinka voit kommunikoida Arduinon ja Pythonin välillä käyttämällä pyserial -moduulia ja ohjata LEDiä. Jos et ole nähnyt sitä, katso se täältä: ARDUINON JA PYTHONIN VÄLITYS!

Ja kuinka voit tunnistaa esineen värin ja seurata sitä näytöllä, tarkista se täältä: VÄRITUNNISTUS OPENCV: N JA PYTHONIN KÄYTTÖÄ käyttäen.

Tässä opetusohjelmassa näytän sinulle, kuinka voit seurata kasvoja Arduino & Pythonin avulla ja saada kamera seuraamaan kasvoja. Tämä voi kuulostaa vaikealta, mutta usko minua, että se ei ole, tarvitset vain perustiedot Arduinosta ja Pythonista.

Aloitetaan siis…

Vaihe 1: Tarvitsemasi asiat:

Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat
Tarvitsemasi asiat

Vaatimukset ovat vähimmäisvaatimukset. Tässä olen antanut osaluettelon kaikesta mitä tarvitset:

Laitteistovaatimus:

  • Arduino UNO (Amazon USA / Amazon EU)
  • Verkkokamera (Amazon USA / Amazon EU)
  • Servot x 2 (Amazon USA / Amazon EU)
  • Leipälauta (Amazon USA / Amazon EU)
  • Servo Pan Tilt Kit (Amazon USA / Amazon EU)

Ohjelmistovaatimus:

  1. Python 2.7 (pitäisi asentaa, Linux-käyttöjärjestelmässä se on yleensä esiasennettu)
  2. OpenCV (Voit ladata sen erikseen tai asentaa käyttämällä '' pip install '' - selitystä)
  3. pyserial (voidaan asentaa pipillä)
  4. numpy.
  5. Haarcascade.

Kun kaikki asiat on koottu, voimme siirtyä asennusvaiheeseen…

Vaihe 2: Python-ympäristön määrittäminen:

Python-ympäristön määrittäminen
Python-ympäristön määrittäminen
Python-ympäristön määrittäminen
Python-ympäristön määrittäminen
Python-ympäristön määrittäminen
Python-ympäristön määrittäminen

Pythonin asentaminen:

Joten ensin tarvitsemme Python 2.7: n käyttöön. Voit tehdä tämän ensin lataamalla ja asentamalla python 2.7.14. Tarkistaaksesi, onko se asennettu oikein Siirry: Windows -haku >> Kirjoita "IDLE" >> Paina Enter. Python Shellin pitäisi avautua.

TAI

Kirjoita hakuun "CMD" ja avaa komentokehote painamalla Enter. CMD -tyypissä >> python ja paina Enter, Python -käyttöliittymän pitäisi näkyä.

Jos näet virheen CMD: ssä, älä paniikkia, sinun on todennäköisesti asetettava ympäristömuuttuja. Voit seurata tätä opetusohjelmaa täällä ympäristömuuttujan määrittämiseen.

'Pyserial', 'OpenCV' ja 'numpy' asentaminen pythoniin:

Näiden moduulien asentamiseen käytämme pip install, Avaa ensin CMD ja kirjoita seuraavat koodit:-

pip -asennussarja

pip install opencv-python> pip install numpy

nämä komennot asentavat tarvittavat moduulit. Nyt voimme siirtyä koodausosaan …

Vaihe 3: Python -skripti:

Python -skripti
Python -skripti

Ennen kuin aloitat koodin kirjoittamisen, sinun on ensin tehtävä uusi kansio, koska kaikki koodit on tallennettava samaan kansioon. Luo siis uusi kansio, nimeä se mitä haluat. ja lataa "Haarcascade" alta ja liitä se kansioon.

Avaa nyt muistio ja kirjoita alla oleva komentosarja, Tallenna se nimellä face.py samaan kansioon kuin haarcascade. (Voit ladata antamani koodin alla olevasta tiedostosta):

#tuoda kaikki vaaditut moduulit

import numpy np tuonti sarjatuonti aika tuonti sys tuonti cv2 #Setup Tiedonsiirtopolku arduinoon (COM5: n sijasta aseta portti, johon arduino on kytketty) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Yhdistetty arduinoon…") #Haarcascaden tuominen kasvojentunnistukseen face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Videovirran kaappaaminen verkkokamerasta. cap = cv2. VideoCapture (0) #Lue kaapattu kuva, muunna se harmaaksi kuvaksi ja etsi kasvot, kun 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.ympyrä (img, (250, 250), 5, (255, 255, 255), -1) harmaa = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) kasvot = face_cascade.detectMultiScale (harmaa, 1.3) # tunnista kasvot ja tee niiden ympärille suorakulmio. (x, y, w, h) kasvoille: cv2. suorakulmio (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = harmaa [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))) # Roin keskipiste (suorakulmio) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # tietojen lähettäminen arduino printille ("Suorakulmion keskipiste on:", keskellä) data = "X {0: d} Y {1: d} Z".muoto (xx, yy) print ("output = '" +data + "" ") arduino.write (data) #Näytä stream. cv2.imshow ('img', img) #Hit 'Esc' lopettaa suorituksen k = cv2.waitKey (30) & 0xff, jos k == 27: break

Kun tämä on tehty, kirjoita arduino -koodi…

Vaihe 4: Arduino -koodi:

Arduino -koodi
Arduino -koodi

Kun python -skripti on valmis, tarvitsemme arduino -luonnoksen servon ohjaamiseksi. Katso alla oleva koodi, liitä se Arduino IDE: hen ja tallenna se nimellä "servo.ino" samaan kansioon kuin face.py ja haarcascade. lataa koodi ja siirry seuraavaan vaiheeseen yhteyden luomiseksi.

(Alla oleva ladattava tiedosto)

#sisältää

Servo servoVer; // Pystysuora servoservo servoHor; // Horisontaalinen servo int x; int y; int prevX; int edellinen; void setup () {Serial.begin (9600); servoVer.attach (5); // Kiinnitä pystysuora servo nastaan 5 servoHor.attach (6); // Kiinnitä vaakasuora servo nastaan 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = kartta (x, 600, 0, 70, 179); int servoY = kartta (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 (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Vaihe 5: Pan-Tilt-mekanismi:-

Kallistusmekanismi
Kallistusmekanismi
Kallistusmekanismi
Kallistusmekanismi

Olen käyttänyt helposti saatavilla olevaa sarjaa Pan-Tiltille. Halutessasi voit tehdä sellaisen itse puu-/muovi- tai jopa 3D -tulostuksella.

Käyttämäni on melko halpa ja erittäin helppo koota. Jos kuitenkin haluat ohjeita sen tekemiseen, löydät sen täältä.

Vaihe 6: Yhteyksien luominen:

Yhteyksien luominen
Yhteyksien luominen
Yhteyksien luominen
Yhteyksien luominen

Circuit on melko yksinkertainen. Liitä vain kaksi servoa arduinoon.

  1. Pystysuora nastaan 5
  2. Vaakasuora nastaan 6
  3. Virta +5V
  4. Maasta GND: hen

Tarkista kytkentäkaaviosta.

Vaihe 7: TESTAUS:

  • Kun kaikki on tehty, viimeinen asia on testata, toimiiko se. Testaa ensin varmistaaksesi, että servot on liitetty oikein arduinoon ja luonnos on ladattu.
  • Kun luonnos on ladattu, sulje IDE, jotta portti voi muodostaa yhteyden pythoniin.
  • Avaa nyt face.py Python IDLE: llä ja suorita koodi painamalla F5. Yhteyden muodostaminen arduinoon kestää muutaman sekunnin, ja sitten sinun pitäisi pystyä näkemään verkkokameran suoratoistoikkuna. Nyt koodi tunnistaa kasvosi ja servot seuraavat sitä seuratakseen sitä.
  • Servon pitäisi liikkua, kun siirrät objektia. Kiinnitä nyt vain kamera servoihin, jotta se liikkuu servojen kanssa.

Kiitos.

Suositeltava: