Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Pythonin ja OpenCV: n asennus
- Vaihe 2: Mitä ovat Haarin kaltaiset ominaisuudet?
- Vaihe 3: Koodaus Pythonissa
- Vaihe 4: Arduinon ohjelmointi
- Vaihe 5: Johtopäätös
Video: Kasvojen seurantalaite! Python ja Arduino: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Tekijä Techovator0819Youtube -kanavaniSeuraa lisää tekijältä:
Tietoja: Rakastan vain tehdä uusia asioita. Kuten asiat, jotka koskevat mikro-ohjaimia, konetekniikkaa, tekoälyä, tietojenkäsittelytiedettä ja kaikkea muuta, mikä kiinnostaa minua. Ja täältä löydät kaikki… Lisätietoja Techovator0819 »
Hei kaikki siellä lukemassa tätä opettavaista. Tämä on kasvojenseurantalaite, joka toimii OpenCV -nimisellä python -kirjastolla. CV on lyhenne sanoista Computer Vision. Sitten asetin sarjaliitännän tietokoneen ja Arduino UNO: n välille. Tämä tarkoittaa, että tämä ei toimi vain Pythonissa.
Tämä laite tunnistaa kasvosi kehyksessä ja lähettää sitten tietyt komennot Arduinolle kameran sijoittamiseksi siten, että se pysyy kehyksen sisällä! Kuulostaa siistiltä? Hyppäämme sitten asiaan.
Tarvikkeet
1. Arduino UNO
2. 2 x servomoottorit (kaikki servomoottorit ovat kunnossa, mutta käytin Tower Pro SG90: tä)
3. Pythonin asentaminen
4. OpenCV: n asentaminen
5. Verkkokamera
Vaihe 1: Pythonin ja OpenCV: n asennus
Pythonin asentaminen on melko suoraviivaista!
www.python.org/downloads/
Voit seurata yllä olevaa linkkiä ladataksesi sinulle parhaiten sopivan python -version (Mac, Windows tai Linux) (64- tai 32 -bittinen). Muu asennusprosessi on yksinkertainen ja käyttöliittymä opastaa sinua.
Kun olet valmis, avaa komentorivi ja kirjoita seuraava:
pip asenna opencv-python
Sen pitäisi asentaa openCV -kirjasto. Ongelmatilanteissa voit tarkistaa tämän sivun.
Kun olet määrittänyt ympäristön ja kaikki edellytykset, katsotaan kuinka voimme todella rakentaa tämän!
Vaihe 2: Mitä ovat Haarin kaltaiset ominaisuudet?
Haar-kaltaiset ominaisuudet ovat digitaalisen kuvan ominaisuuksia. Nimi tulee Haar waveletsista. Nämä ovat neliönmuotoisia aaltoja, joita käytetään digitaalisen kuvan ominaisuuksien tunnistamiseen. Haar-kaskadit ovat pohjimmiltaan luokittelija, joka auttaa meitä havaitsemaan esineitä (meidän tapauksessamme kasvoja) käyttämällä haar-kaltaisia ominaisuuksia.
Meidän tapauksessamme yksinkertaisuuden vuoksi käytämme esikoulutettuja Haar Cascadeja kasvojen tunnistamiseen. Voit seurata TÄTÄ github-sivun linkkiä ja ladata Haar Cascaden xml-tiedoston.
1. Napsauta haarcascade_frontalface_alt.xml
2. Napsauta koodi -ikkunan oikeassa yläkulmassa olevaa Raw -painiketta.
3. Se ohjaa sinut toiselle sivulle, jossa on vain tekstiä.
4. Napsauta hiiren kakkospainikkeella ja valitse Tallenna nimellä.
5. Tallenna se samaan hakemistoon tai kansioon kuin python -koodisi, jota aiot kirjoittaa.
Vaihe 3: Koodaus Pythonissa
tuoda cv2
tuoda numpy np tuonti sarjatuonnin aika
Tuomme kaikki tarvitsemamme kirjastot.
ard = sarja. Sarja ("COM3", 9600)
Luomme sarjaobjektin nimeltä 'ard'. Määritämme myös portin nimen ja BaudRate -parametrit.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Luomme toisen kohteen Haar Cascadea varten. Varmista, että HaarCascade -tiedosto on samassa kansiossa kuin tämä python -ohjelma.
vid = cv2. VideoCapture (0)
Luomme objektin, joka kaappaa videon verkkokamerasta. 0 parametrina tarkoittaa ensimmäistä tietokoneeseen yhdistettyä verkkokameraa.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
vaikka totta:
_, frame = vid.read ()#lukee nykyisen kehyksen muuttuvaksi kehykseksi harmaa = cv2.cvtColor (kehys, cv2. COLOR_BGR2GRAY)#muuntaa kehyksen -> harmaasävyinen kuva#seuraava rivi tunnistaa kasvot. #Ensimmäinen parametri on kuva, jonka haluat havaita #minSize = () määrittää kasvojen vähimmäiskoon pikseleinä #Napsauta yllä olevaa linkkiä saadaksesi lisätietoja Cascade -luokittelusta kasvot = face_cascade.detectMultiScale (harmaa, minSize = (80, 80), minNeighbors = 3) #A silmukalle kasvojen havaitsemiseksi. (x, y, w, h) kasvoille: cv2. suorakulmio (kehys, (x, y), (x+w, y+h), (255, 0, 0), 2) #piirrä suorakulmio kasvot Xpos = x+(w/2)#laskee kasvojen keskipisteen X-koordinaatin. Ypos = y+(h/2) #laskee kasvojen keskipisteen Y-koordinaatin, jos Xpos> 280: #Seuraavat koodilohot tarkistavat, ovatko kasvot ard.write ('L'.encode ()) #on vasemmalle, oikealle, ylhäältä tai alhaalta ajan suhteen. nukkuminen (0.01) #keskuksen kehys. 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'.koodaa ()) time.sleep (0.01) tauko cv2.imshow (' kehys ', kehys) #näyttää kehyksen erillisessä ikkunassa. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #jos 'q' painetaan näppäimistöllä, se poistuu while -silmukasta. tauko
cv2.destroyAllWindows () #sulkee kaikki ikkunat
ard.close () #sulkee sarjaliikenteen
vid.release () #lopettaa videon vastaanottamisen verkkokamerasta.
Vaihe 4: Arduinon ohjelmointi
Voit vapaasti muokata ohjelmaa laitteistosi mukaan tarpeidesi mukaan.
#sisältää
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
void setup () {
// laita asennuskoodi tähän, jotta se suoritetaan kerran: Serial.begin (9600); servoX.attach (9); servoY.kiinnitys (10); servoX.write (x); servoY.write (y); viive (1000); }
char input = ""; // sarjatulo tallennetaan tähän muuttujaan
void loop () {
// laita pääkoodisi tähän, jotta se suoritetaan toistuvasti: if (Serial.available ()) {// tarkistaa, onko tietoja sarjapuskurin syötteessä = Serial.read (); // lukee tiedot muuttujaan if (input == 'U') {servoY.write (y+1); // säätää servokulmaa tulon y += 1 mukaan; // päivittää kulman arvon} 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 = ""; // tyhjentää muuttujan} // prosessi toistuu jatkuvasti !!:)}
Vaihe 5: Johtopäätös
Tämä on yksi mukava ja interaktiivinen tapa, jolla voit suunnitella sisällyttämään Computer Visionin Arduino -projekteihisi. Computer Vision on itse asiassa varsin hauska. Ja toivon todella, että piditte siitä. Jos kyllä, kerro siitä kommenteissa. Ja tilaa youtube -kanavani. Kiitos jo etukäteen <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Suositeltava:
Kasvojen tunnistus ja tunnistus - Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: 6 vaihetta
Kasvojen tunnistus ja tunnistus | Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: Kasvontunnistus AKA -kasvotunnus on yksi tärkeimmistä ominaisuuksista matkapuhelimissa nykyään. Joten minulla oli kysymys " voinko saada kasvotunnuksen Arduino -projektilleni " ja vastaus on kyllä … Matkani alkoi seuraavasti: Vaihe 1: Pääsy
Yksinkertainen arvauspeli - Python + XBees + Arduino: 10 vaihetta
Yksinkertainen arvauspeli - Python + XBees + Arduino: Näin peli toimii: Sinulla on 4 yritystä arvata kirjain välillä "a" - "h" - > Arvaa oikea kirjain: Voitat! ?-> Arvaa väärä kirjain: Peli ohi?-> Arvaa joku muu hahmo a -h: n ulkopuolella: Peli ohi? Arduinosi antaa sinulle
Kasvojen muutosprojisointimaski - ole mitä tahansa: 14 vaihetta (kuvilla)
Kasvojen vaihtava projektionaamio - ole mitä tahansa: Mitä teet, kun et voi päättää, mitä haluat olla Halloweenina? Ole kaikki. Projisointimaski koostuu valkoisesta 3D -tulostetusta naamiosta, vadelmapiistä, pienestä projektorista ja akusta. Se pystyy heijastamaan mitä tahansa ja kaikkea
Kerjäävä robotti kasvojen seurannalla ja ohjauksella Xbox -ohjaimen avulla - Arduino: 9 vaihetta (kuvilla)
Kerjäävä robotti kasvojen seurannalla ja ohjauksella Xbox -ohjaimella - Arduino: Aiomme tehdä kerjäävän robotin. Tämä robotti yrittää ärsyttää tai saada huomiota ohikulkijoihin. Se tunnistaa heidän kasvonsa ja yrittää ampua heitä laserilla. Jos annat robotille kolikon, hän laulaa kappaleen ja tanssii. Robotti tarvitsee
Kasvojen ja silmien tunnistus Raspberry Pi Zero- ja Opencv -tekniikoilla: 3 vaihetta
Kasvojen ja silmien tunnistus Raspberry Pi Zero- ja Opencv -ohjelmilla: Tässä ohjeessa näytän, kuinka voit tunnistaa kasvot ja silmät vadelma pi: n ja opencv: n avulla. Tämä on ensimmäinen ohjeeni opencv: ssä. Seurasin monia opetusohjelmia avatakseni cv: n vadelmassa, mutta joka kerta iski joitakin virheitä. Joka tapauksessa minä