Sadržaj:
- Supplies
- Korak 1: Instalirajte Python i OpenCV
- Korak 2: Koje su karakteristike slične Haaru?
- Korak 3: Kodiranje u Pythonu
- Korak 4: Programiranje Arduina
- Korak 5: Zaključak
Video: Uređaj za praćenje lica! Python & Arduino: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Autor Techovator0819Moj Youtube kanal Slijedi Više od autora:
O: Volim stvarati nove stvari. Poput stvari koje se tiču mikrokontrolera, mašinstva, umjetne inteligencije, računarstva i svega što me zanima. I ovdje ćete pronaći sve… Više o Techovator0819 »
Pozdrav svima koji čitaju ovo uputstvo. Ovo je uređaj za praćenje lica koji radi na Python biblioteci pod nazivom OpenCV. CV znači „Computer Vision“. Zatim sam postavio serijsko sučelje između svog računala i mog Arduino UNO -a. To znači da ovo ne radi samo na Pythonu.
Ovaj uređaj prepoznaje vaše lice u okviru, a zatim šalje određene naredbe Arduinu da postavi kameru na takav način da ostane unutar kadra! Zvuči super? Uđimo onda u to.
Supplies
1. Arduino UNO
2. 2 x servo motora (Svi servo motori će biti u redu, ali koristio sam Tower Pro SG90)
3. Instaliranje Pythona
4. Instaliranje OpenCV -a
5. Web kamera
Korak 1: Instalirajte Python i OpenCV
Instaliranje Pythona prilično je jednostavno!
www.python.org/downloads/
Možete slijediti gornju vezu za preuzimanje verzije pythona (Mac, Windows ili Linux) koja vam najviše odgovara (64 ili 32 bita). Ostatak instalacijskog procesa je jednostavan i vodiće vas kroz sučelje.
Kada završite instalaciju, otvorite naredbeni redak i upišite sljedeće:
pip install opencv-python
To bi trebalo instalirati biblioteku openCV. U slučaju rješavanja problema, možete provjeriti OVU stranicu.
Nakon što smo postavili okruženje i sve preduvjete, da vidimo kako to zapravo možemo izgraditi!
Korak 2: Koje su karakteristike slične Haaru?
Karakteristike poput haara su karakteristike digitalne slike. Ime dolazi od Haar wavelets. Ovo je porodica valova kvadratnog oblika koji se koriste za identifikaciju karakteristika na digitalnoj slici. Haar kaskade su u osnovi klasifikator koji nam pomaže u otkrivanju objekata (u našem slučaju lica) pomoću značajki sličnih haarima.
U našem slučaju, radi jednostavnosti, upotrijebit ćemo unaprijed obučene Haar kaskade za identifikaciju lica. Možete slijediti OVU vezu stranice github-a i preuzeti xml datoteku za Haar kaskadu.
1. Kliknite na 'haarcascade_frontalface_alt.xml'
2. Kliknite na dugme 'Raw' u gornjem desnom dijelu prozora koda.
3. Preusmjerit će vas na drugu stranicu sa samo tekstom.
4. Desni klik i pritisnite 'Save as..'
5. Sačuvajte ga u istom direktoriju ili fascikli kao i kod python koda o kome pišete.
Korak 3: Kodiranje u Pythonu
import cv2
import numpy kao np uvoz serijsko vreme uvoza
Uvozimo sve potrebne biblioteke.
ard = serijski. Serijski ("COM3", 9600)
Kreiramo serijski objekt pod nazivom 'ard'. Kao parametre navodimo i naziv porta i BaudRate.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Stvaramo još jedan objekt za našu Haar Cascade. Pobrinite se da HaarCascade datoteka ostane u istoj mapi kao i ovaj python program.
vid = cv2. VideoCapture (0)
Izrađujemo objekt koji snima videozapise s web kamere. 0 kao parametar znači prva web kamera spojena na moj računar.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
dok je True:
_, frame = vid.read ()#čita trenutni okvir u varijablu frame grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#pretvara okvir -> slika u sivim tonovima#sljedeća linija otkriva lica. #Prvi parametar je slika koju želite otkriti na #minSize = () određuje minimalnu veličinu lica u smislu piksela #Kliknite gornju vezu da saznate više o Cascade Classification lica = face_cascade.detectMultiScale (sivo, minSize = (80, 80), minNeighbors = 3) #A for petlja za otkrivanje lica. za (x, y, w, h) u licima: cv2.rectangle (okvir, (x, y), (x+w, y+h), (255, 0, 0), 2)#povlači pravokutnik oko lice Xpos = x+(w/2)#izračunava X koordinatu središta lica. Ypos = y+(h/2) #izračunava Y koordinatu središta lica ako je Xpos> 280: #Sljedeći blokovi koda provjeravaju je li lice ard.write ('L'.encode ()) #on lijevo, desno, odozgo ili odozdo s obzirom na vrijeme.spavanje (0,01) #središte kadra. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#prikazuje okvir u zasebnom prozoru. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #ako se na tipkovnici pritisne 'q', izlaz iz while petlje. break
cv2.destroyAllWindows () #zatvara sve prozore
ard.close () #zatvara serijsku komunikaciju
vid.release () #prestaje primati video sa web kamere.
Korak 4: Programiranje Arduina
Slobodno izmijenite program prema postavkama hardvera koje odgovaraju vašim potrebama.
#include
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
void setup () {
// ovdje postavite svoj kôd za postavljanje, da biste ga jednom pokrenuli: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); kašnjenje (1000); }
char input = ""; // serijski ulaz je pohranjen u ovoj varijabli
void loop () {{100} {101}
// ovde unosite svoj glavni kod, da bi se ponavljao: if (Serial.available ()) {// proverava da li se neki podaci nalaze u serijskom međuspremniku input = Serial.read (); // čita podatke u varijablu if (input == 'U') {servoY.write (y+1); // podešava kut servo prema ulazu y += 1; // ažurira vrijednost kuta} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } input = ""; // briše varijablu} // proces se stalno ponavlja !!:)}
Korak 5: Zaključak
Ovo je jedan lijep i interaktivan način na koji možete dizajnirati uključivanje Computer Vision u svoje Arduino projekte. Computer Vision je zapravo prilično zabavan. I zaista se nadam da vam se svidelo. Ako da, javite mi u komentarima. I pretplatite se na moj youtube kanal. Hvala unapred <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Preporučuje se:
PRAĆENJE LICA KORIŠĆENJEM ARDUINO !!!: 7 koraka
PRAĆENJE LICA KORIŠĆENJEM ARDUINA !!!: U prethodnom uputstvu sam podijelio kako možete komunicirati između Arduina i Pythona pomoću 'pyserial' modula i kontrolirati LED. Ako niste vidjeli, provjerite ovdje: KOMUNIKACIJA IZMEĐU ARDUINA & PYTHON! I kako možete otkriti boju o
Otkrivanje lica, obuka i prepoznavanje Opencv lica: 3 koraka
Otkrivanje lica, obuka i prepoznavanje lica Opencv: OpenCV je biblioteka računarskog vida otvorenog koda koja je vrlo popularna za obavljanje osnovnih zadataka obrade slika, 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
Praćenje i praćenje za male trgovine: 9 koraka (sa slikama)
Track & trace za male trgovine: Ovo je sistem koji je napravljen za male trgovine koje bi trebalo montirati na e-bicikle ili e-skutere za kratke isporuke, na primjer pekara koja želi isporučivati peciva. Track and Trace je sistem koji koriste ca
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 da napravimo nešto super. Upoznajte robote Ghosty i Skully. Oni mogu pratiti vaše lice i znaju kada se smijete da se smijete s vama! Ovaj projekt je još jedan primjer korištenja aplikacije iRobbie koja pretvara iPhone u
Pištolj za praćenje lica: 4 koraka
Pištolj za praćenje lica: Ovaj projekt je 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ć