INHOUDSOPGAWE:

Gesigsopsporingstoestel! Python en Arduino: 5 stappe
Gesigsopsporingstoestel! Python en Arduino: 5 stappe

Video: Gesigsopsporingstoestel! Python en Arduino: 5 stappe

Video: Gesigsopsporingstoestel! Python en Arduino: 5 stappe
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, Julie
Anonim
Image
Image
Gesigsopsporingstoestel! Python en Arduino
Gesigsopsporingstoestel! Python en Arduino
Gesigsopsporingstoestel! Python en Arduino
Gesigsopsporingstoestel! Python en Arduino

Deur Techovator0819 My Youtube -kanaal Volg meer deur die skrywer:

IoT: Weather Box (met pasgemaakte alarms en timers)
IoT: Weather Box (met pasgemaakte alarms en timers)
IoT: Weather Box (met pasgemaakte alarms en timers)
IoT: Weather Box (met pasgemaakte alarms en timers)
Die multifunksionele outonome robot: 'bate'
Die multifunksionele outonome robot: 'bate'
Die multifunksionele outonome robot: 'bate'
Die multifunksionele outonome robot: 'bate'

Oor: Ek hou net daarvan om nuwe dinge te maak. Soos dinge oor mikrobeheerders, meganiese ingenieurswese, kunsmatige intelligensie, rekenaarwetenskap en enigiets wat my interesseer. En hier vind u al die … Meer oor Techovator0819 »

Hallo almal daar buite wat hierdie instruksies lees. Dit is 'n gesigopsporingstoestel wat werk op 'n python -biblioteek genaamd OpenCV. CV staan vir 'Computer Vision'. Toe stel ek 'n seriële koppelvlak op tussen my rekenaar en my Arduino UNO. Dit beteken dus dat dit nie net op Python werk nie.

Hierdie toestel herken u gesig in die raam en stuur dan sekere opdragte na die Arduino om die kamera so te plaas dat dit binne die raam bly! Klink dit cool? Kom ons spring dan dadelik daarin.

Voorrade

1. Arduino UNO

2. 2 x Servomotors (enige servomotors sal goed wees, maar ek het Tower Pro SG90 gebruik)

3. Die installering van Python

4. Installeer OpenCV

5. Web-kamera

Stap 1: Installeer Python en OpenCV

Die installering van Python is redelik eenvoudig!

www.python.org/downloads/

U kan die skakel hierbo volg om die python -weergawe (Mac, Windows of Linux) af te laai wat die beste by u pas (64 bit of 32 bit). Die res van die installasieproses is eenvoudig en u word deur die koppelvlak gelei.

As u klaar is met die installasie, maak u die opdragprompt oop en tik die volgende:

pip installeer opencv-python

Dit moet die openCV -biblioteek installeer. As u probleme ondervind, kan u HIERDIE bladsy besoek.

Nadat ons die omgewing en alle voorvereistes opgestel het, laat ons kyk hoe ons dit eintlik kan bou!

Stap 2: Wat is Haar-agtige kenmerke?

Haaragtige kenmerke is kenmerke van 'n digitale beeld. Die naam kom van Haar wavelets. Dit is 'n familie van vierkantige golwe wat gebruik word om kenmerke in 'n digitale beeld te identifiseer. Haar watervalle is basies 'n klassifiseerder wat ons help om voorwerpe (in ons geval gesigte) op te spoor met behulp van die haaragtige funksies.

In ons geval, vir die eenvoud, gebruik ons vooraf opgeleide Haar Cascades om gesigte te identifiseer. U kan HIERDIE skakel van 'n github-bladsy volg en die xml-lêer vir die Haar Cascade aflaai.

1. Klik op 'haarcascade_frontalface_alt.xml'

2. Klik op die 'Rou' knoppie in die regter boonste gedeelte van die kodevenster.

3. Dit lei u na 'n ander bladsy met slegs teks.

4. Klik met die rechtermuisknop en klik op 'Stoor as..'

5. Stoor dit in dieselfde gids of gids as die van die python -kode waaroor u gaan skryf.

Stap 3: Kodering in Python

voer cv2 in

invoer numpy as np invoer reeks invoer tyd

Ons voer al die biblioteke in wat ons benodig.

ard = serial. Serial ("COM3", 9600)

Ons skep 'n reeksvoorwerp genaamd 'ard'. Ons spesifiseer ook die poortnaam en die BaudRate as parameters.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Ons skep nog 'n voorwerp vir ons Haar Cascade. Maak seker dat die HaarCascade -lêer in dieselfde gids as hierdie python -program bly.

vid = cv2. VideoCapture (0)

Ons skep 'n voorwerp om die video van die webcam op te neem. 0 as die parameter beteken die eerste webkamera wat aan my rekenaar gekoppel is.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

terwyl dit waar is:

_, frame = vid.read ()#lees die huidige raam na die veranderlike raam grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY)#omskep raam -> beeld in grysskaal#die volgende reël ontdek gesigte. #Eerste parameter is die beeld waarop u wil opspoor op #minSize = () spesifiseer die minimum grootte van die gesig in terme van pixels #Klik op die skakel hierbo om meer te wete te kom oor die Cascade Classification -gesigte = face_cascade.detectMultiScale (grys, minSize = (80, 80), minNeighbors = 3) #A vir lus om die gesigte op te spoor. vir (x, y, w, h) in vlakke: cv2. reghoek (raam, (x, y), (x+w, y+h), (255, 0, 0), 2)#teken 'n reghoek om die gesig Xpos = x+(w/2) #c bereken die X-koördinaat van die middel van die gesig. Ypos = y+(h/2) #calcualtes die Y-koördinaat van die middel van die gesig as Xpos> 280: #Die volgende kodeblokke kyk of die gesig ard.write ('L'.encode ()) #on is links, regs, bo of onder met betrekking tot die tydslaap (0.01) #sentrum van die raam. elif Xpos 280: ard.write ('D'.code ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.code ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', raam)#vertoon die raam in 'n aparte venster. k = cv2.waitKey (1) & 0xFF as (k == ord ('q')): #as 'q' op die sleutelbord ingedruk word, verlaat dit die while -lus. breek

cv2.destroyAllWindows () #sluit alle vensters

ard.close () #sluit die reekskommunikasie

vid.release () #hou op om video van die webkamera te ontvang.

Stap 4: Programmering van die Arduino

Pas die program aan volgens u hardeware -opstelling wat aan u behoeftes voldoen.

#insluit

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

ongeldige opstelling () {

// sit u opstellingskode hier om een keer te werk: Serial.begin (9600); servoX.aanheg (9); servoY.attach (10); servoX.write (x); servoY.write (y); vertraging (1000); }

char input = ""; // reeksinvoer word in hierdie veranderlike gestoor

leemte -lus () {

// sit u hoofkode hier om herhaaldelik te werk: if (Serial.available ()) {// kyk of daar data in die seriële buffer -invoer is = Serial.read (); // lees die data in 'n veranderlike as (input == 'U') {servoY.write (y+1); // pas die servohoek aan volgens die invoer y += 1; // werk die waarde van die hoek} anders op as (input == 'D') {servoY.write (y-1); y -= 1; } anders {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } anders as (input == 'R') {servoX.write (x+1); x += 1; } anders {servoX.write (x); } input = ""; // maak die veranderlike skoon} // proses herhaal steeds !!:)}

Stap 5: Gevolgtrekking

Dit is 'n goeie en interaktiewe manier waarop u rekenaarvisie in u Arduino -projekte kan opneem. Computer Vision is eintlik baie lekker. En ek hoop regtig dat julle daarvan gehou het. Indien wel, laat weet my in die kommentaar. En teken asseblief in op my youtube -kanaal. By voorbaat dankie <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Aanbeveel: