Sisällysluettelo:

Kasvojen seurantalaite! Python ja Arduino: 5 vaihetta
Kasvojen seurantalaite! Python ja Arduino: 5 vaihetta

Video: Kasvojen seurantalaite! Python ja Arduino: 5 vaihetta

Video: Kasvojen seurantalaite! Python ja Arduino: 5 vaihetta
Video: Leap Motion SDK 2024, Marraskuu
Anonim
Image
Image
Kasvojen seurantalaite! Python ja Arduino
Kasvojen seurantalaite! Python ja Arduino
Kasvojen seurantalaite! Python ja Arduino
Kasvojen seurantalaite! Python ja Arduino

Tekijä Techovator0819Youtube -kanavaniSeuraa lisää tekijältä:

IoT: Säälaatikko (mukautetuilla hälytyksillä ja ajastimilla)
IoT: Säälaatikko (mukautetuilla hälytyksillä ja ajastimilla)
IoT: Säälaatikko (mukautetuilla hälytyksillä ja ajastimilla)
IoT: Säälaatikko (mukautetuilla hälytyksillä ja ajastimilla)
Monitoiminen itsenäinen robotti: 'Omaisuus'
Monitoiminen itsenäinen robotti: 'Omaisuus'
Monitoiminen itsenäinen robotti: 'Omaisuus'
Monitoiminen itsenäinen robotti: 'Omaisuus'

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: