INHOUDSOPGAWE:
- Voorrade
- Stap 1: Installeer Python en OpenCV
- Stap 2: Wat is Haar-agtige kenmerke?
- Stap 3: Kodering in Python
- Stap 4: Programmering van die Arduino
- Stap 5: Gevolgtrekking
Video: Gesigsopsporingstoestel! Python en Arduino: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
Deur Techovator0819 My Youtube -kanaal Volg meer deur die skrywer:
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:
MIDI Drum Kit op Python en Arduino: 5 stappe (met foto's)
MIDI Drum Kit op Python en Arduino: Ek wou nog altyd 'n dromstel koop sedert ek 'n kind was. Destyds het al die musikale toerusting nie al die digitale toepassings gehad nie, aangesien ons baie vandag het, daarom was die pryse en die verwagtinge te hoog. Onlangs het ek besluit om 'n
Gesigsherkenning en identifikasie - Arduino Face ID met behulp van OpenCV Python en Arduino .: 6 stappe
Gesigsherkenning en identifikasie | Arduino Face ID met behulp van OpenCV Python en Arduino .: Gesigsherkenning AKA face ID is deesdae een van die belangrikste funksies op selfone. Ek het dus 'n vraag: "Kan ek 'n gesig -ID hê vir my Arduino -projek?" en die antwoord is ja … My reis het soos volg begin: Stap 1: Toegang tot ons
N Eenvoudige raaisel - Python + XBees + Arduino: 10 stappe
N Eenvoudige raaisel - Python + XBees + Arduino: So werk die spel: U het 4 pogings om 'n letter tussen' a ' -' h ' - > Raai die regte letter: jy wen! ?-> Raai die verkeerde letter: spel verby?-> Raai u dat enige ander karakter buite 'a' - 'h': die spel verby is? Met u Arduino kan u
Visualiseer u Bitcoin -wins en -verlies met Arduino en Python: 6 stappe
Visualiseer u Bitcoin -wins en -verlies met Arduino & Python: basiese idee Persoonlik is ek 'n belegger in crypto -geldeenhede. Maar ek het ook baie werk om by te dra. Ek kan dus nie die bitcoin -prys 10 keer per minuut dophou nie. Ek wil egter steeds weet of ek geld verdien of verloor. Dus
Ligte intensiteit planne met behulp van Arduino en Python's Arduino Master Library: 5 stappe
Ligte intensiteit met behulp van Arduino en Python se Arduino Master Library: Arduino is 'n ekonomiese, maar tog baie doeltreffende en funksionele hulpmiddel, en die programmering in Embedded C maak die proses vervelig! Die Arduino_Master -module van Python vereenvoudig dit en laat ons berekeninge uitvoer, vulliswaardes verwyder