- Tarvittavat komponentit
- OpenCV: n asentaminen Raspberry Pi: hen
- Muiden vaadittujen pakettien asentaminen
- Vadelma Pi: n ohjelmointi
- Kuljettajan uneliaisuuden havaitsemisjärjestelmän testaaminen
Kuorma-autonkuljettajat, jotka kuljettavat lastia ja raskaita materiaaleja pitkiä matkoja päivällä ja yöllä, kärsivät usein unen puutteesta. väsymys ja uneliaisuus ovat suurimpia moottoriteiden suuronnettomuuksien syitä. Autoteollisuus kehittää joitain tekniikoita, jotka voivat tunnistaa uneliaisuuden ja varoittaa kuljettajaa siitä.
Tässä projektissa aiomme rakentaa kuljettajille unen tunnistus- ja hälytysjärjestelmän käyttäen Raspberry Pi-, OpenCV- ja Pi-kameramoduulia. Tämän järjestelmän perustarkoitus on seurata kuljettajan kasvojen tilaa ja silmien liikkeitä, ja jos kuljettaja tuntuu uneliaiselta, järjestelmä laukaisee varoitusviestin. Tämä on edellisen kasvojenkohde- ja kasvojentunnistussovelluksen laajennus.
Tarvittavat komponentit
Laitteiston komponentit
- Vadelma Pi 3
- Pi-kameramoduuli
- Mikro-USB-kaapeli
- Summeri
Ohjelmistot ja verkkopalvelut
- OpenCV
- Dlib
- Python 3
Ennen tämän kuljettajan uneliaisuus havaitseminen hanke , ensin meidän täytyy asentaa OpenCV, imutils, dlib, Numpy, ja joitakin muita riippuvuuksia tässä projektissa. OpenCV: tä käytetään tässä digitaaliseen kuvankäsittelyyn. Digitaalisen kuvankäsittelyn yleisimmät sovellukset ovat kohteiden tunnistus, kasvojentunnistus ja ihmiset laskevat.
Täällä käytämme vain Raspberry Pi: tä, Pi-kameraa ja summeria tämän unihälytysjärjestelmän rakentamiseen.
OpenCV: n asentaminen Raspberry Pi: hen
Ennen OpenCV: n ja muiden riippuvuuksien asentamista Raspberry Pi on päivitettävä kokonaan. Päivitä Raspberry Pi uusimpaan versioon alla olevien komentojen avulla:
sudo apt-get -päivitys
Käytä sitten seuraavia komentoja asentaaksesi tarvittavat riippuvuudet OpenCV: n asentamiseksi Raspberry Pi -laitteeseesi.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Asenna lopuksi OpenCV Raspberry Pi -laitteeseen alla olevien komentojen avulla.
pip3 install opencv-contrib-python == 4.1.0.25
Jos olet uusi OpenCV: n käyttäjä, tarkista aiemmat OpenCV-oppaamme Raspberry pi: llä:
- OpenCV: n asentaminen Raspberry Pi: lle CMaken avulla
- Reaaliaikainen kasvojentunnistus Raspberry Pi: n ja OpenCV: n avulla
- Rekisterikilven tunnistus Raspberry Pi: n ja OpenCV: n avulla
- Joukon koon arviointi käyttämällä OpenCV: tä ja Vadelma Pi: tä
Olemme myös luoneet sarjan OpenCV-oppaita alkaen aloittelijan tasosta.
Muiden vaadittujen pakettien asentaminen
Asenna muut vaaditut paketit ennen Raspberry Pi -ohjelmointia uneliaisuuden ilmaisimelle.
Dlib: dlib on moderni työkalupakki, joka sisältää koneoppimisen algoritmeja ja työkaluja reaalimaailman ongelmiin. Asenna dlib alla olevan komennon avulla.
pip3 asenna dlib
NumPy: n asentaminen: NumPy on tieteellisen laskennan ydinkirjasto, joka sisältää tehokkaan n-ulotteisen matriisiobjektin, tarjoaa työkaluja C: n, C ++: n jne. Integrointiin.
pip3 asenna numero
Kasvojentunnistusmoduulin asentaminen: Tätä kirjastoa käytettiin kasvojen tunnistamiseen ja käsittelyyn Pythonista tai komentoriviltä. Asenna kasvojentunnistuskirjasto alla olevan komennon avulla.
Pip3 asenna kasvojentunnistus
Viimeisessä asennetaan eye_game- kirjasto alla olevan komennon avulla:
pip3 asenna silmäpeli
Vadelma Pi: n ohjelmointi
Täydellinen koodi kuljettajan uneliaisuuden ilmaisimelle, joka käyttää OpenCV: tä, annetaan sivun lopussa. Tässä selitämme joitain tärkeitä koodin osia ymmärtämisen parantamiseksi.
Joten, kuten tavallista, aloita koodi sisällyttämällä kaikki vaaditut kirjastot.
tuonti kasvojentunnistus tuonti cv2 tuonti numero kuten np tuonti aika tuonti cv2 tuonti RPi.GPIO kuin GPIO tuonti silmäpeli
Luo sen jälkeen instanssi hankkiakseen videosyötteen pi-kamerasta. Jos käytät useampaa kuin yhtä kameraa, korvaa nolla yhdellä cv2: ssä. VideoCapture (0) -toiminto.
video_capture = cv2.VideoCapture (0)
Kirjoita nyt seuraaville riveille tiedoston nimi ja polku. Minun tapauksessani sekä koodi että tiedosto ovat samassa kansiossa. Käytä sitten kasvokoodauksia saadaksesi kasvojen sijainnin kuvassa.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Luo sen jälkeen kaksi taulukkoa kasvojen ja niiden nimien tallentamiseksi. Käytän vain yhtä kuvaa; voit lisätä koodiin lisää kuvia ja niiden polkuja.
tunnettu_kasvon_koodaus = tunnettu_kasvon_nimi =
Luo sitten muuttujia kasvojen osien sijaintien, kasvojen nimien ja koodauksien tallentamiseksi.
face_locations = face_encodings = face_names = prosessi_this_frame = True
Kaappaa while- toiminnon sisällä videokehykset suoratoistosta ja muuta niiden kokoa pienemmäksi ja muunna kaapattu kehys RGB-väreiksi kasvojentunnistusta varten.
ret, frame = video_capture.read () small_frame = cv2.resize (kehys, (0, 0), fx = 0,25, fy = 0,25) rgb_small_frame = pieni_kehys
Suorita sen jälkeen kasvojentunnistusprosessi, jotta voit verrata videon kasvoja kuvaan. Ja myös saada kasvojen osien sijainnit.
if process_this_frame: face_locations = face_recognition.face_locations (rgb_small_frame) face_encodings = face_recognition.face_encodings (rgb_small_frame, face_locations) cv2.imwrite (tiedosto, pieni_kehys)
Jos tunnistetut kasvot vastaavat kuvassa olevia kasvoja , seuraa silmän liikkeitä kutsumalla silmäpelitoimintoa . Koodi seuraa toistuvasti silmän ja silmämunan sijaintia.
face_distances = face_recognition.face_distance (tunnetut_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) jos vastaavat: nimi = known_face_names direction = silmän_peli.get_eyeball_direction (tiedosto) tulosta (suunta)
Jos koodi ei havaitse silmän liikkeitä 10 sekunnin ajan, se laukaisee hälytyksen ihmisen herättämiseksi.
muuten: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Hälytys! ! Hälytys! Kuljettajan uneliaisuus havaittu ")
Piirrä sitten suorakulmio kasvojen ympärille OpenCV-toimintojen avulla ja laita siihen teksti. Näytä myös videokehykset käyttämällä cv2.imshow- toimintoa.
cv2.suorakulmio (kehys, (vasen, ylhäältä), (oikea, alhaalta), (0, 255, 0), 2) cv2.suorakulmio (kehys, (vasemmalta, alhaalta - 35), (oikealta, alta), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (kehys, nimi, (vasen + 6, alareuna - 6), fontti, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', kehys) Aseta avain 'S' pysäyttämään koodi. jos cv2.waitKey (1) & 0xFF == ord ('s'): tauko
Kuljettajan uneliaisuuden havaitsemisjärjestelmän testaaminen
Kun koodi on valmis, liitä Pi-kamera ja summeri Raspberry Pi -laitteeseen ja suorita koodi. Noin 10 sekunnin kuluttua näyttöön tulee ikkuna, jossa näkyy suoratoisto Raspberry Pi -kamerastasi. Kun laite tunnistaa kasvot, se tulostaa nimesi kehykseen ja alkaa seurata silmän liikettä. Sulje nyt silmäsi 7-8 sekunniksi testataksesi hälytyksen. Kun laskennasta tulee yli 10, se laukaisee hälytyksen, joka ilmoittaa tilanteesta.
Näin voit rakentaa uneliaisuudenilmaisimen OpenCV: n ja Raspberry Pi: n avulla. Vieritä alas toimiva video ja koodi.