Sadržaj:

Uređaj za praćenje lica! Python i Arduino: 5 koraka
Uređaj za praćenje lica! Python i Arduino: 5 koraka

Video: Uređaj za praćenje lica! Python i Arduino: 5 koraka

Video: Uređaj za praćenje lica! Python i Arduino: 5 koraka
Video: MJC School. We are ready to help you become a programmer. 2024, Studeni
Anonim
Image
Image
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino
Uređaj za praćenje lica! Python i Arduino

Napisao Techovator0819Moj Youtube kanal Slijedite Više od autora:

IoT: Weather Box (s prilagođenim alarmima i mjeračima vremena)
IoT: Weather Box (s prilagođenim alarmima i mjeračima vremena)
IoT: Weather Box (s prilagođenim alarmima i mjeračima vremena)
IoT: Weather Box (s prilagođenim alarmima i mjeračima vremena)
Višenamjenski autonomni robot: "imovina"
Višenamjenski autonomni robot: "imovina"
Višenamjenski autonomni robot: "imovina"
Višenamjenski autonomni robot: "imovina"

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: