Sadržaj:
- Korak 1: Stvari koje će vam trebati:
- Korak 2: Postavljanje Python okruženja:
- Korak 3: Python skripta:
- Korak 4: Arduino kod:
- Korak 5: Pan-Tilt mehanizam:-
- Korak 6: Uspostavljanje veza:
- Korak 7: TESTIRANJE:
Video: PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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:
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:
- Python 2.7 (Treba ga instalirati, Linux OS ga obično ima unaprijed instaliran)
- OpenCV (Možete ga preuzeti zasebno ili instalirati pomoću 'pip install' Objašnjeno dalje)
- pyserial (može se instalirati s pipom)
- numpy.
- Haarcascade.
Nakon što se sve prikupi, možemo prijeći na korak instalacije …
Korak 2: 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:
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:
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:-
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:
Krug je prilično jednostavan. Samo priključite dva serva na arduino.
- Okomito na pin 5
- Vodoravno na pin 6
- Napajanje do +5V
- 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:
Otkrivanje lica, obuka i prepoznavanje Opencv lica: 3 koraka
Otkrivanje lica, obuka i prepoznavanje lica Opencv: OpenCV je knjižnica računalnog vida otvorenog koda koja je vrlo popularna za obavljanje osnovnih zadataka obrade slike, kao što su zamućivanje, miješanje slika, poboljšanje slike, kao i kvaliteta videa, određivanje praga itd. Osim obrade slike, to je prov
Maska za promjenu lica za promjenu lica - Budite bilo što: 14 koraka (sa slikama)
Maska za promjenu lica za promjenu lica - Budite bilo što: Što radite kada ne možete odlučiti što želite biti za Noć vještica? Budi sve. Maska za projekciju sastoji se od bijele 3D tiskane maske, pi od maline, malog projektora i baterije. Sposoban je projicirati sve i svašta
Uređaj za praćenje lica! Python i Arduino: 5 koraka
Uređaj za praćenje lica! Python & Arduino: Pozdrav svima koji čitaju ovo uputstvo. Ovo je uređaj za praćenje lica koji radi na Python knjižnici koja se zove OpenCV. CV znači "Computer Vision". Zatim sam postavio serijsko sučelje između svog računala i mog Arduino UNO -a. Pa to znači ovo
Roboti za praćenje lica i osmijeha za otkrivanje osmijeha: 8 koraka (sa slikama)
Praćenje lica i otkrivanje osmijeha Roboti za Noć vještica: Noć vještica dolazi! Odlučili smo izgraditi nešto cool. Upoznajte robote Ghosty i Skully. Mogu pratiti vaše lice i znaju kad se smijete da se smijete s vama! Ovaj projekt je još jedan primjer korištenja aplikacije iRobbie koja pretvara iPhone u int
Pištolj za praćenje lica: 4 koraka
Pištolj za praćenje lica: Ovaj je projekt proširenje projekta laserske puške s ožičenjem prikazanog ovdje-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Jedina razlika je u tome što pištolj neće aktivirati laser već