Sadržaj:
- Pribor
- Korak 1: Instaliranje Pythona i OpenCV -a
- Korak 2: Koje su značajke slične Haaru?
- Korak 3: Kodiranje u Pythonu
- Korak 4: Programiranje Arduina
- Korak 5: Zaključak
Video: Uređaj za praćenje lica! Python i Arduino: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Napisao Techovator0819Moj Youtube kanal Slijedite Više od autora:
O: Jednostavno volim stvarati nove stvari. Poput stvari koje se tiču mikrokontrolera, strojarstva, umjetne inteligencije, računalnih znanosti i svega što me zanima. 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 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. 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 okvira! Zvuči cool? Uđimo onda u to.
Pribor
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: Instaliranje Pythona i OpenCV -a
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 bitna ili 32 bitna). Ostatak instalacijskog procesa je jednostavan, a sučelje će vas voditi.
Nakon što završite instalaciju, otvorite naredbeni redak i upišite sljedeće:
pip instalirajte opencv-python
To bi trebalo instalirati knjižnicu 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 značajke slične Haaru?
Značajke poput haara značajke su digitalne slike. Naziv dolazi od Haar wavelets. To je obitelj valova kvadratnog oblika koji se koriste za identifikaciju značajki na digitalnoj slici. Haar kaskade u osnovi su klasifikator koji nam pomaže otkriti objekte (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 na githubu i preuzeti xml datoteku za Haar kaskadu.
1. Kliknite na "haarcascade_frontalface_alt.xml"
2. Pritisnite gumb 'Raw' u gornjem desnom dijelu prozora koda.
3. Preusmjerit će vas na drugu stranicu sa samo tekstom.
4. Desnim klikom kliknite "Spremi kao.."
5. Spremite ga u isti direktorij ili mapu kao i kod python koda o kojem pišete.
Korak 3: Kodiranje u Pythonu
uvoz cv2
uvoz numpy kao np uvoz serijsko vrijeme uvoza
Uvozimo sve potrebne biblioteke.
ard = serijski. Serijski ("COM3", 9600)
Izrađujemo serijski objekt pod nazivom 'ard'. Također smo kao parametre naveli naziv porta i BaudRate.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Mi stvaramo još jedan objekt za našu Haar kaskadu. Pobrinite se da datoteka HaarCascade ostane u istoj mapi kao ovaj python program.
vid = cv2. VideoCapture (0)
Izrađujemo objekt koji snima videozapis s web kamere. 0 kao parametar znači prva web kamera spojena na moje računalo.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
dok je istina:
_, frame = vid.read ()#čita trenutni okvir u varijablu frame grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#pretvara okvir -> slika u sivim tonovima#sljedeći redak prepoznaje 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) na licima: cv2.pravokutnik (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, gore ili dolje s obzirom na vrijeme.spavanje (0,01) #središte okvira. 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. pauza
cv2.destroyAllWindows () #zatvara sve prozore
ard.close () #zatvara serijsku komunikaciju
vid.release () #prestaje primati video zapis s web kamere.
Korak 4: Programiranje Arduina
Slobodno izmijenite program prema postavkama hardvera koje odgovaraju vašim potrebama.
#uključi
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.priključak (9); servoY.priključak (10); servoX.write (x); servoY.write (y); kašnjenje (1000); }
char input = ""; // serijski ulaz je pohranjen u ovoj varijabli
void loop () {{100} {101}
// ovdje unesite svoj glavni kôd, za ponavljanje izvođenja: if (Serial.available ()) {// provjerava jesu li neki podaci 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 osmisliti uključivanje Computer Vision u svoje Arduino projekte. Računalni vid je zapravo vrlo zabavan. I zaista se nadam da vam se svidjelo. Ako da, javite mi u komentarima. I molim vas pretplatite se na moj youtube kanal. Hvala unaprijed <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Preporučeni:
PRAĆENJE LICA KORIŠTENJEM ARDUINO !!!: 7 koraka
PRAĆENJE LICA KORIŠTENJEM ARDUINA !!!: 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 & PITON! 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 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
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ć