Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Installere Python og OpenCV
- Trinn 2: Hva er Haar-lignende funksjoner?
- Trinn 3: Koding i Python
- Trinn 4: Programmering av Arduino
- Trinn 5: Konklusjon
Video: Ansiktssporingsenhet! Python og Arduino: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
Av Techovator0819 Min Youtube -kanal Følg mer av forfatteren:
Om: Jeg liker bare å lage nye ting. Som ting som omhandler mikrokontrollere, maskinteknikk, kunstig intelligens, informatikk og alt som interesserer meg. Og her finner du alt… Mer om Techovator0819 »
Hei alle der ute som leser dette lærerikt. Dette er en ansiktssporingsenhet som fungerer på et python -bibliotek kalt OpenCV. CV står for 'Computer Vision'. Deretter satte jeg opp et serielt grensesnitt mellom min PC og min Arduino UNO. Så det betyr at dette ikke bare fungerer på Python.
Denne enheten gjenkjenner ansiktet ditt i rammen, så sender den visse kommandoer til Arduino for å plassere kameraet på en slik måte at det forblir inne i rammen! Høres kult ut? La oss hoppe rett inn i det da.
Rekvisita
1. Arduino UNO
2. 2 x Servomotorer (Alle servomotorer vil være fine, men jeg brukte Tower Pro SG90)
3. Installere Python
4. Installere OpenCV
5. Web-kamera
Trinn 1: Installere Python og OpenCV
Det er ganske rett frem å installere Python!
www.python.org/downloads/
Du kan følge koblingen ovenfor for å laste ned python -versjonen (Mac, Windows eller Linux) som passer deg best (64 bit eller 32 bit). Resten av installasjonsprosessen er enkel, og du blir guidet gjennom av grensesnittet.
Når du er ferdig med installasjonen, åpner du ledeteksten og skriver inn følgende:
pip installer opencv-python
Det bør installere openCV -biblioteket. Ved feilsøking kan du sjekke DENNE siden.
Etter å ha satt opp miljøet og alle forutsetninger, la oss se hvordan vi faktisk kan bygge dette!
Trinn 2: Hva er Haar-lignende funksjoner?
Haarlignende funksjoner er trekk ved et digitalt bilde. Navnet kommer fra Haar wavelets. Dette er en familie av firkantede bølger som brukes til å identifisere funksjoner i et digitalt bilde. Haar kaskader er i utgangspunktet en klassifisering som hjelper oss med å oppdage objekter (i ansiktene våre) ved hjelp av de hårlignende funksjonene.
I vårt tilfelle, for enkelhets skyld, bruker vi forhåndsutdannede Haar Cascades til å identifisere ansikter. Du kan følge DENNE lenken til en github-side og laste ned xml-filen for Haar Cascade.
1. Klikk på 'haarcascade_frontalface_alt.xml'
2. Klikk på "Raw" -knappen øverst til høyre i kodevinduet.
3. Det vil lede deg til en annen side med bare tekst.
4. Høyreklikk og klikk "Lagre som.."
5. Lagre den i samme katalog eller mappe som pythonkoden du skriver.
Trinn 3: Koding i Python
importer cv2
import numpy som np import seriell importtid
Vi importerer alle bibliotekene vi trenger.
ard = serial. Serial ("COM3", 9600)
Vi lager et serieobjekt kalt 'ard'. Vi spesifiserer også portnavnet og BaudRate som parametere.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Vi lager et annet objekt for Haar Cascade. Sørg for at HaarCascade -filen forblir i samme mappe som dette python -programmet.
vid = cv2. VideoCapture (0)
Vi lager et objekt som fanger video fra webkameraet. 0 som parameter betyr den første webkameraet som er koblet til min PC.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
mens det er sant:
_, frame = vid.read ()#leser gjeldende ramme til den variable rammen grå = cv2.cvtColor (ramme, cv2. COLOR_BGR2GRAY) #konverterer ramme -> gråtonet bilde#følgende linje oppdager ansikter. #First parameter er bildet du vil oppdage på #minSize = () angir minimumsstørrelsen på ansiktet når det gjelder piksler #Klikk på lenken ovenfor for å vite mer om Cascade Classification ansikter = face_cascade.detectMultiScale (grå, minSize = (80, 80), minNeighbors = 3) #A for sløyfe for å oppdage ansiktene. for (x, y, w, h) i ansikter: cv2.rektangel (ramme, (x, y), (x+w, y+h), (255, 0, 0), 2) #tegner et rektangel rundt ansiktet Xpos = x+(m/2) #c beregner X-koordinaten til ansiktets sentrum. Ypos = y+(h/2) #calcualtes Y-koordinaten til midten av ansiktet hvis Xpos> 280: #Følgende kodeblokker sjekker om ansiktet er ard.write ('L'.encode ()) #on venstre, høyre, topp eller bunn med hensyn til tiden. sove (0,01) #sentrum av rammen. 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'.kode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame) #display the frame in a separate window. k = cv2.waitKey (1) & 0xFF hvis (k == ord ('q')): #if 'q' trykkes på tastaturet, forlater det mens -sløyfen. gå i stykker
cv2.destroyAllWindows () #lukker alle vinduer
ard.close () #lukker den serielle kommunikasjonen
vid.release () #slutter å motta video fra webkameraet.
Trinn 4: Programmering av Arduino
Du er velkommen til å endre programmet i henhold til maskinvareoppsettet som passer dine behov.
#inkludere
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
ugyldig oppsett () {
// legg oppsettskoden her for å kjøre en gang: Serial.begin (9600); servoX. fest (9); servoY.attach (10); servoX.write (x); servoY.write (y); forsinkelse (1000); }
char input = ""; // seriell inngang lagres i denne variabelen
void loop () {
// legg hovedkoden din her for å kjøre gjentatte ganger: if (Serial.available ()) {// sjekker om det er data i den serielle bufferinngangen = Serial.read (); // leser dataene inn i en variabel hvis (input == 'U') {servoY.write (y+1); // justerer servovinkelen i henhold til inngangen y += 1; // oppdaterer verdien av vinkelen} else if (input == 'D') {servoY.write (y-1); y -= 1; } annet {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } annet hvis (input == 'R') {servoX.write (x+1); x += 1; } annet {servoX.write (x); } input = ""; // sletter variabelen} // prosessen fortsetter å gjenta !!:)}
Trinn 5: Konklusjon
Dette er en fin og interaktiv måte du kan designe inkorporere Computer Vision i dine Arduino -prosjekter. Computer Vision er faktisk ganske morsomt. Og jeg håper virkelig at dere har likt det. Hvis ja, gi meg beskjed i kommentarene. Og vær så snill å abonnere på min youtube -kanal. På forhånd takk <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
MIDI Drum Kit på Python og Arduino: 5 trinn (med bilder)
MIDI Drum Kit på Python og Arduino: Jeg har alltid ønsket å kjøpe et trommesett siden jeg var liten. Da hadde ikke alt det musikalske utstyret alle digitale applikasjoner, ettersom vi har mye i dag, og derfor var prisene sammen med forventningene for høye. Nylig har jeg bestemt meg for å kjøpe en c
Ansiktsgjenkjenning og identifikasjon - Arduino Face ID ved hjelp av OpenCV Python og Arduino .: 6 trinn
Ansiktsgjenkjenning og identifikasjon | Arduino Face ID Bruke OpenCV Python og Arduino .: Ansiktsgjenkjenning AKA face ID er en av de viktigste funksjonene på mobiltelefoner i dag. Så jeg hadde et spørsmål " kan jeg ha en ansikts -ID for mitt Arduino -prosjekt " og svaret er ja … Reisen min startet som følger: Trinn 1: Tilgang til vi
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
DIY Arduino robotarm, trinn for trinn: 9 trinn
DIY Arduino robotarm, trinn for trinn: Denne opplæringen lærer deg hvordan du bygger en robotarm selv