Sadržaj:

PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka
PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka

Video: PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka

Video: PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka
Video: Стабилизация биохимических показателей крови. Большой восстановительный рефлекторный каскад 2024, Srpanj
Anonim
PRAĆENJE LICA UPOTREBOM ARDUINO !!!
PRAĆENJE LICA UPOTREBOM ARDUINO !!!

U prethodnim uputama podijelio sam kako možete komunicirati između Arduina i Pythona pomoću 'pyserial' modula i kontrolirati LED. Ako to niste vidjeli, provjerite ovdje: KOMUNIKACIJA IZMEĐU ARDUINA I PITONA!

A kako možete otkriti boju objekta i pratiti je na ekranu, provjerite ovdje: OTKRIVANJE BOJE KORIŠTENJEM OPENCV I PITONA.

U ovom Instructableu pokazat ću vam kako pratiti lica pomoću Arduina i Pythona i natjerati kameru da prati lice. Ovo može zvučati teško, ali vjerujte da nije. Sve što trebate je osnovno znanje o Arduinu i Pythonu.

Pa krenimo…

Korak 1: Stvari koje će vam trebati:

Stvari koje će vam trebati
Stvari koje će vam trebati
Stvari koje će vam trebati
Stvari koje će vam trebati
Stvari koje će vam trebati
Stvari koje će vam trebati

Zahtjevi su minimalni. Ovdje sam dao popis dijelova svega što vam treba:

Hardverski zahtjevi:

  • Arduino UNO (Amazon SAD / Amazon EU)
  • Web kamera (Amazon SAD / Amazon EU)
  • Servos x 2 (Amazon SAD / Amazon EU)
  • Oglasna ploča (Amazon SAD / Amazon EU)
  • Servo Pan Tilt Kit (Amazon SAD / Amazon EU)

Softverski zahtjevi:

  1. Python 2.7 (Treba ga instalirati, Linux OS ga obično ima unaprijed instaliran)
  2. OpenCV (Možete ga preuzeti zasebno ili instalirati pomoću 'pip install' Objašnjeno dalje)
  3. pyserial (može se instalirati s pipom)
  4. numpy.
  5. Haarcascade.

Nakon što se sve prikupi, možemo prijeći na korak instalacije …

Korak 2: Postavljanje Python okruženja:

Postavljanje Python okruženja
Postavljanje Python okruženja
Postavljanje Python okruženja
Postavljanje Python okruženja
Postavljanje Python okruženja
Postavljanje Python okruženja

Instaliranje Pythona:

Dakle, prvo nam je potreban Python 2.7 pokrenut i pokrenut. Da biste to učinili, prvo preuzmite i instalirajte python 2.7.14. Da biste provjerili je li ispravno instaliran Idite na: Windows pretraživanje >> Upišite "IDLE" >> Pritisnite Enter. Python ljuska bi se trebala pojaviti.

ILI

U pretraživanju upišite 'CMD' i pritisnite enter za otvaranje naredbenog retka. U CMD vrsti >> python i pritisnite enter, Python sučelje bi se trebalo prikazati.

Ako vidite pogrešku u CMD -u, nemojte paničariti, vjerojatno morate postaviti varijablu okruženja. Ovaj vodič možete slijediti ovdje za postavljanje varijable okruženja.

Instaliranje 'pyserial', 'OpenCV "i" numpy "u python:

Za instaliranje ovih modula koristit ćemo pip install, Prvo otvorite CMD i upišite sljedeće kodove:-

pip install serijski

pip install opencv-python> pip install numpy

ove naredbe će instalirati potrebne module. Sada možemo prijeći na dio kodiranja …

Korak 3: Python skripta:

Python skripta
Python skripta

Prije početka pisanja koda prvo morate napraviti novu mapu jer sav kôd treba pohraniti u istu mapu. Zato stvorite novu mapu, dajte joj ime kako god želite. i preuzmite "Haarcascade" odozdo i zalijepite ga u mapu.

Sada otvorite bilježnicu i napišite dolje navedenu skriptu, spremite je kao 'face.py' u istu mapu kao i haarcascade. (Možete preuzeti kôd koji sam dao u nastavku):

#uvezite sve potrebne module

import numpy kao np uvoz serijsko vrijeme uvoza import sys import cv2 #Postavljanje Komunikacijska staza za arduino (Umjesto 'COM5' stavite port na koji je vaš arduino spojen) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Povezano s arduinom …") #importira Haarcascade za otkrivanje lica face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Za snimanje videotoka s web kamere. cap = cv2. VideoCapture (0) #Pročitajte snimljenu sliku, pretvorite je u sivu sliku i pronađite lica dok 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) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) lica = face_cascade.detectMultiScale (sivo, 1.3) # otkriti lice i napraviti pravokutnik oko njega. za (x, y, w, h) u licima: cv2.pravokutnik (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = sivo [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)) # Centar roi (Pravokutnik) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 ispisa (xx) ispis (yy) centar = (xx, yy) # slanje podataka u arduino print ("Centar pravokutnika je:", centar) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Prikaži stream. cv2.imshow ('img', img) #Hit 'Esc' za prekid izvođenja k = cv2.waitKey (30) & 0xff ako je k == 27: break

Nakon što to učinite, prijeđite na pisanje koda za arduino …

Korak 4: Arduino kod:

Arduino kod
Arduino kod

Nakon što je python skripta spremna, potrebna nam je arduino skica za kontrolu serva. Pogledajte donji kod, zalijepite ga u Arduino IDE i spremite kao 'servo.ino' u istu mapu kao face.py i haarcascade. prenesite kôd i prijeđite na sljedeći korak za uspostavljanje veze.

(Datoteka koja se može preuzeti ispod)

#uključi

Servo servoVer; // Vertikalni servo Servo servoHor; // Horizontalni servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Priključite okomiti servo na pin 5 servoHor.attach (6); // Priključite vodoravni servo na pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = karta (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 (); }}}

Korak 5: Pan-Tilt mehanizam:-

Pan-Tilt mehanizam
Pan-Tilt mehanizam
Pan-Tilt mehanizam
Pan-Tilt mehanizam

Koristio sam lako dostupan komplet za Pan-Tilt. Ako želite, možete ga sami izraditi koristeći drvo/plastiku ili čak 3D ispis.

Ovaj koji sam koristio je prilično jeftin i vrlo se lako sastavlja. Ipak, ako želite upute kako to učiniti, možete ih pronaći ovdje.

Korak 6: Uspostavljanje veza:

Uspostavljanje veza
Uspostavljanje veza
Uspostavljanje veza
Uspostavljanje veza

Krug je prilično jednostavan. Samo priključite dva serva na arduino.

  1. Okomito na pin 5
  2. Vodoravno na pin 6
  3. Napajanje do +5V
  4. Uzemljenje prema GND

Referentno provjerite dijagram kruga.

Korak 7: TESTIRANJE:

  • Nakon što je sve učinjeno, zadnje što trebate učiniti je provjeriti radi li. Za testiranje prvo provjerite jesu li servo uređaji ispravno spojeni na arduino i je li skica učitana.
  • Nakon što se skica prenese, zatvorite IDE tako da se port može slobodno povezati s pythonom.
  • Sada otvorite 'face.py' s Python IDLE -om i pritisnite 'F5' za pokretanje koda. Povezivanje s arduinom trajat će nekoliko sekundi, a zatim biste trebali moći vidjeti prozor koji struji web kameru. Sada će kod detektirati vaše lice, a servo upravljači će ga pratiti.
  • Servo bi se trebao pomicati dok pomičete objekt. Sada samo pričvrstite kameru na servosisteme kako bi se kretala zajedno sa servo pogonima.

Hvala vam.

Preporučeni: