- Komponenter kreves
- Installere OpenCV i Raspberry Pi
- Installere andre nødvendige pakker
- Programmering av Raspberry Pi
- Testing av førerens døsighetsregistreringssystem
Lastebilsjåfører som transporterer lasten og tunge materialer over lange avstander om dagen og natten, de lider ofte av søvnmangel. tretthet og døsighet er noen av de viktigste årsakene til større ulykker på motorveier. Bilindustrien jobber med noen teknologier som kan oppdage døsighet og varsle sjåføren om det.
I dette prosjektet skal vi bygge et søvnsenserings- og varslingssystem for drivere ved hjelp av Raspberry Pi, OpenCV og Pi kameramodul. Det grunnleggende formålet med dette systemet er å spore førerens ansiktsforhold og øyebevegelser, og hvis føreren føler seg døsig, vil systemet utløse en advarsel. Dette er utvidelsen av vår forrige ansikts landemerke deteksjon og ansiktsgjenkjenning applikasjon.
Komponenter kreves
Maskinvarekomponenter
- Raspberry Pi 3
- Pi kameramodul
- Micro USB-kabel
- Summer
Programvare og online tjenester
- OpenCV
- Dlib
- Python3
Før du fortsetter med denne driveren døsighet deteksjon prosjektet , først må vi installere OpenCV, imutils, dlib, Numpy, og noen andre avhengigheter i dette prosjektet. OpenCV brukes her til digital bildebehandling. De vanligste bruksområdene for digital bildebehandling er gjenkjenning av objekter, ansiktsgjenkjenning og personteller.
Her bruker vi bare Raspberry Pi, Pi Camera og en summer for å bygge dette søvnregistreringssystemet.
Installere OpenCV i Raspberry Pi
Før du installerer OpenCV og andre avhengigheter, må Raspberry Pi oppdateres fullstendig. Bruk kommandoene nedenfor for å oppdatere Raspberry Pi til den siste versjonen:
sudo apt-get oppdatering
Bruk deretter følgende kommandoer for å installere de nødvendige avhengighetene for å installere OpenCV på din Raspberry Pi.
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
Til slutt installerer du OpenCV på Raspberry Pi ved hjelp av kommandoene nedenfor.
pip3 installer opencv-contrib-python == 4.1.0.25
Hvis du ikke er kjent med OpenCV, kan du sjekke våre forrige OpenCV-opplæringsprogrammer med Raspberry pi:
- Installere OpenCV på Raspberry Pi ved hjelp av CMake
- Sanntids ansiktsgjenkjenning med Raspberry Pi og OpenCV
- Lisensgjenkjenning ved bruk av Raspberry Pi og OpenCV
- Estimering av mengde ved bruk av OpenCV og Raspberry Pi
Vi har også laget en serie OpenCV-opplæringsprogrammer fra begynnernivå.
Installere andre nødvendige pakker
Før vi programmerer Raspberry Pi for Døsighetsdetektor, la oss installere de andre nødvendige pakkene.
Installere dlib: dlib er den moderne verktøysettet som inneholder maskinlæringsalgoritmer og verktøy for virkelige problemer. Bruk kommandoen nedenfor for å installere dlib.
pip3 installer dlib
Installere NumPy: NumPy er kjernebiblioteket for vitenskapelig databehandling som inneholder et kraftig n-dimensjonalt arrayobjekt, gir verktøy for å integrere C, C ++, etc.
pip3 installere nummen
Installere face_recognition-modul: Dette biblioteket brukes til å gjenkjenne og manipulere ansikter fra Python eller kommandolinjen. Bruk kommandoen nedenfor for å installere ansiktsgjenkjenningsbiblioteket.
Pip3 installerer ansiktsgjenkjenning
Og til slutt, installer eye_game- biblioteket ved hjelp av kommandoen nedenfor:
pip3 installer øyespill
Programmering av Raspberry Pi
Komplett kode for Driver Døsighet Detektor ved bruk av OpenCV er gitt på slutten av siden. Her forklarer vi noen viktige deler av koden for bedre forståelse.
Så som vanlig, start koden med å inkludere alle nødvendige biblioteker.
import face_recognition import cv2 import numpy as np import time import cv2 import RPi.GPIO as GPIO import eye_game
Deretter oppretter du en forekomst for å hente videofeeden fra pi-kameraet. Hvis du bruker mer enn ett kamera, må du erstatte null med ett i cv2.VideoCapture (0) -funksjonen.
video_capture = cv2.VideoCapture (0)
Nå i de neste linjene, skriv inn filnavnet og banen til filen. I mitt tilfelle er både koden og filen i samme mappe. Bruk deretter ansiktskodingene for å få ansiktsplasseringen på bildet.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Deretter oppretter du to matriser for å lagre ansiktene og navnene deres. Jeg bruker bare ett bilde; du kan legge til flere bilder og deres baner i koden.
known_face_encodings = kjent_face_names =
Lag deretter noen variabler for å lagre ansiktsdeler, ansiktsnavn og kodinger.
face_locations = face_encodings = face_names = process_this_frame = True
Inne i mens- funksjonen kan du fange videorammene fra streaming og endre størrelsen på bildene til mindre størrelse og også konvertere den fangede rammen til RGB-farge for ansiktsgjenkjenning.
ret, frame = video_capture.read () liten_ramme = cv2.resize (ramme, (0, 0), fx = 0,25, fy = 0,25) rgb_small_frame = liten_ramme
Kjør deretter ansiktsgjenkjenningsprosessen for å sammenligne ansiktene i videoen med bildet. Og få også ansiktsdelene.
if process_this_frame: face_locations = face_recognition.face_locations (rgb_small_frame) face_encodings = face_recognition.face_codings (rgb_small_frame, face_locations) cv2.imwrite (file, small_frame)
Hvis det gjenkjente ansiktet stemmer overens med ansiktet i bildet, så ring øyespillfunksjonen for å spore øyebevegelsene. Koden vil gjentatte ganger spore øyets og øyeeples posisjon.
face_distances = face_recognition.face_distance (known_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) if matches: name = known_face_names direction = eye_game.get_eyeball_direction (file) print (direction)
Hvis koden ikke oppdager noen øyebevegelse i 10 sekunder, vil den utløse alarmen for å vekke personen.
annet: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Alert! ! Alert !! Driver Døsighet oppdaget ")
Bruk deretter OpenCV-funksjonene til å tegne et rektangel rundt ansiktet og legge en tekst på det. Vis også videorammene ved hjelp av funksjonen cv2.imshow .
cv2.rectangle (ramme, (venstre, øverst), (høyre, nederst), (0, 255, 0), 2) cv2. rektangel (ramme, (venstre, nederst - 35), (høyre, bunn), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (ramme, navn, (venstre + 6, nederst - 6), font, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', ramme) Still nøkkelen 'S' for å stoppe koden. if cv2.waitKey (1) & 0xFF == ord ('s'): break
Testing av førerens døsighetsregistreringssystem
Når koden er klar, kobler du Pi-kameraet og summeren til Raspberry Pi og kjører koden. Etter ca. 10 sekunder vises et vindu med live streaming fra Raspberry Pi-kameraet ditt. Når enheten gjenkjenner ansiktet, vil den skrive ut navnet ditt på rammen og begynne å spore øyebevegelsen. Lukk nå øynene i 7 til 8 sekunder for å teste alarmen. Når tellingen blir mer enn 10, vil den utløse en alarm som varsler deg om situasjonen.
Slik kan du bygge Døsighetsdetektor ved hjelp av OpenCV og Raspberry Pi. Rull ned for arbeidsvideoen og koden.