Sadržaj:

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

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

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

U prethodnom uputstvu sam podijelio 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 koristeći Arduino & Python i natjerati kameru da prati lice. Ovo može zvučati teško, ali vjerujte mi 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

Uslovi 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 Shell bi trebao iskočiti.

ILI

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

Ako vidite grešku u CMD -u, nemojte paničariti, vjerojatno ćete morati 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 serial

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 je 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):

#importirajte sve potrebne module

import numpy kao np import serijsko vrijeme uvoza import sys import cv2 #Postavljanje Komunikacijska staza za arduino (Umjesto 'COM5' stavite port na koji je vaš arduino povezan) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Povezano na arduino …") #uvoz Haarcascade -a za otkrivanje lica face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Za snimanje video toka sa 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) # otkrijte lice i napravite 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 ispis (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 izvršavanja k = cv2.waitKey (30) & 0xff ako je k == 27: break

Nakon što to učinite, krenite u 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. otpremite kôd i prijeđite na sljedeći korak za uspostavljanje veze.

(Datoteka za preuzimanje data je ispod)

#include

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: Mehanizam pomicanja:-

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 napraviti 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 veze:

Uspostavljanje veza
Uspostavljanje veza
Uspostavljanje veza
Uspostavljanje veza

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

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

Referentno provjerite dijagram kola.

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 prikazuje web kameru. Sada će kod otkriti 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 ti.

Preporučuje se: