Tartalomjegyzék:

Álmosságriasztó rendszer: 3 lépés
Álmosságriasztó rendszer: 3 lépés

Videó: Álmosságriasztó rendszer: 3 lépés

Videó: Álmosságriasztó rendszer: 3 lépés
Videó: Kösz, jól #3: Miért ne fogadjuk el, hogy a rossz alvás az élet része? 2024, Július
Anonim
Álmosságriasztó rendszer
Álmosságriasztó rendszer

Minden évben sok ember veszíti életét halálos közúti balesetek miatt szerte a világon, és az álmos vezetés a közúti balesetek és halálesetek egyik elsődleges oka. A fáradtság és a mikroalvás a vezetési kezelőszerveknél gyakran a súlyos balesetek kiváltó oka. A fáradtság kezdeti jelei azonban már a kritikus helyzet kialakulása előtt észlelhetők, ezért a vezető fáradtságának észlelése és annak jelzése folyamatos kutatási téma. Az álmosság észlelésére szolgáló hagyományos módszerek többsége viselkedési szempontokon alapul, míg mások tolakodóak, és elvonhatják a járművezetők figyelmét, míg mások drága érzékelőket igényelnek. Ezért ebben a cikkben egy könnyű, valós idejű sofőr álmosság-érzékelő rendszerét fejlesztették ki és valósították meg az Android alkalmazásban. A rendszer rögzíti a videókat, és minden képkockában felismeri a vezető arcát a képfeldolgozási technikák alkalmazásával. A rendszer képes felismerni az arc nevezetességeit, kiszámítja az Eye Aspect Ratio (EAR) és a Eye Closure Ratio (ECR) értékeket, hogy az adaptív küszöbértékek alapján érzékelje a vezető álmosságát. Gépi tanulási algoritmusokat alkalmaztak a javasolt megközelítés hatékonyságának tesztelésére. A tapasztalati eredmények azt mutatják, hogy a javasolt modell 84% -os pontosságot képes elérni véletlenszerű erdőosztályozó segítségével.

1. lépés: A szükséges dolgok

1. MÁRKA PI

2. WEBCAM (C270 HD WEB CAM a jobb eredményekért)

A számítógépes verzió némi változtatást igényelhet a kódban

2. lépés: Python -kód szemmel alakú előrejelző adatkészlet (PC -verzió)

A valós idejű videók hatékonyabb észleléséhez használhatjuk ezt a sbelow.dat fájlt.

drive.google.com/open?id=1UiSHe72L4TeN14VK…

Töltse le a.dat fájlt a fenti linkről, és futtassa az alábbi python kódot

Python kód

from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (szem):

A = távolság. Euklideszi (szem [1], szem [5]) B = távolság. Euklideszi (szem [2], szem [4]) C = távolság. Euklideszi (szem [0], szem [3]) fül = A + B)

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0, míg True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) szürke = cv2.cvtColor (keret, cv2. COLOR_BGR2GRAY) alanyok = észlelés (szürke, 0) az alany alanyaiban: alak = előrejelzés (szürke, alany) alak = arc_util.shape_to_np (alak) #konvertálás NumPy tömbhöz leftEye = alak [lStart: lEnd] rightEye = alak [rStart: rEnd] leftEAR = szem_szemlélet_arány (bal szem drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (keret, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

3. lépés: Raspberry Pi verzió

Raspberry Pi verzió
Raspberry Pi verzió
Raspberry Pi verzió
Raspberry Pi verzió

amikor a személy becsukja a szemét, akkor a málna pi figyelmeztetést ad

Csatlakoztassa a hangjelzőt a 23 -as érintkezőhöz (lásd a képet)

a scipy.térbeli importtávolságtól

importálja az RPi. GPIO -t GPIO -ként

az idő alvó alvásból

GPIO.setwarnings (hamis)

GPIO.setmode (GPIO. BCM)

az imutils -ból import face_utils

import imutils import dlib import cv2

zümmögő = 23

GPIO.setup (zümmögő, GPIO. OUT)

def eye_aspect_ratio (szem):

A = távolság. Euklideszi (szem [1], szem [5]) B = távolság. Euklideszi (szem [2], szem [4]) C = távolság. Euklideszi (szem [0], szem [3]) fül = A + B)

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0, míg True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) szürke = cv2.cvtColor (keret, cv2. COLOR_BGR2GRAY) alanyok = észlelés (szürke, 0) az alany alanyaiban: alak = előrejelzés (szürke, alany) alak = arc_util.shape_to_np (alak) #konvertálás NumPy tömbhöz leftEye = alak [lStart: lEnd] rightEye = alak [rStart: rEnd] leftEAR = szem_szemlélet_arány (bal szem drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.kimenet (zümmögő, GPIO. HIGH)

más: zászló = 0

GPIO.kimenet (zümmögő, GPIO. LOW)

cv2.imshow ("Frame", frame) kulcs = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()

Ajánlott: