Indholdsfortegnelse:

Døsighed Alert System: 3 trin
Døsighed Alert System: 3 trin

Video: Døsighed Alert System: 3 trin

Video: Døsighed Alert System: 3 trin
Video: Головные боли. Упражнения опасные и безопасные 2024, Juli
Anonim
Døsighed Alert System
Døsighed Alert System

Hvert år mister mange mennesker livet på grund af dødelige trafikuheld rundt om i verden, og døsig kørsel er en af de primære årsager til trafikulykker og dødsfald. Træthed og mikrosøvn ved førerkontrollerne er ofte årsagen til alvorlige ulykker. Imidlertid kan indledende tegn på træthed opdages, før der opstår en kritisk situation, og derfor er detektion af førerens træthed og dens indikation løbende forskningsemne. De fleste af de traditionelle metoder til at opdage døsighed er baseret på adfærdsmæssige aspekter, mens nogle er påtrængende og kan distrahere chauffører, mens nogle kræver dyre sensorer. Derfor er der i dette papir udviklet og implementeret et letvægts, realtids-system til registrering af førerens døsighed i systemet i Android-applikationer. Systemet optager videoerne og registrerer førerens ansigt i hver ramme ved at anvende billedbehandlingsteknikker. Systemet er i stand til at registrere ansigtsmærker, beregner Eye Aspect Ratio (EAR) og Eye Closure Ratio (ECR) for at registrere førers døsighed baseret på adaptiv tærskelværdi. Maskinlæringsalgoritmer er blevet anvendt til at teste effektiviteten af den foreslåede tilgang. Empiriske resultater viser, at den foreslåede model er i stand til at opnå en nøjagtighed på 84% ved hjælp af tilfældig skovklassificering.

Trin 1: Ting du har brug for

1. RASPBERRY PI

2. WEBCAM (C270 HD WEBKAMERI FOR BEDRE RESULTATER)

Pc -version har muligvis brug for nogle ændringer i koden

Trin 2: Python -kode med Eyes Shape Predictor Dataset (pc -version)

for at opdage øjne meget effektivt i en video i realtid, kan vi bruge denne.dat -fil nedenfor.

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

Download.dat -filen fra ovenstående link, og kør nedenstående python -kode

Python -kode

fra scipy.spatial importafstand fra imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (øje):

A = distance.euclidean (øje [1], øje [5]) B = distance.euclidean (øje [2], øje [4]) C = distance.euclidean (øje [0], øje [3]) øre = (A + B) / (2,0 * C) tilbagevendende øretærske = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen er kernen i koden

(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 mens True: ret, frame = cap.read () frame = imutils.resize (ramme, bredde = 450) grå = cv2.cvtColor (ramme, cv2. COLOR_BGR2GRAY) emner = detekter (grå, 0) for emne i emner: form = forudsigelse (grå, emne) form = ansigt_brug.form_til_np (form) #konvertering til NumPy Array leftEye = form [lStart: lEnd] rightEye = shape [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ramme, "**************** 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 ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Trin 3: Raspberry Pi -version

Hindbær Pi version
Hindbær Pi version
Hindbær Pi version
Hindbær Pi version

når personerne lukker øjnene, giver raspberry pi dig besked

TILSLUT din summer til pin 23 (se billedet)

fra scipy.spatial importafstand

importer RPi. GPIO som GPIO

fra tid importere søvn

GPIO.setwarnings (falsk)

GPIO.setmode (GPIO. BCM)

fra imutils import face_utils

import imutils import dlib import cv2

summer = 23

GPIO.setup (summer, GPIO. OUT)

def eye_aspect_ratio (øje):

A = distance.euclidean (øje [1], øje [5]) B = distance.euclidean (øje [2], øje [4]) C = distance.euclidean (øje [0], øje [3]) øre = (A + B) / (2,0 * C) øretærske returneres = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen er kernen i koden

(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 mens True: ret, frame = cap.read () frame = imutils.resize (ramme, bredde = 450) grå = cv2.cvtColor (ramme, cv2. COLOR_BGR2GRAY) emner = detekter (grå, 0) for emne i emner: form = forudsigelse (grå, emne) form = ansigt_brug.form_til_np (form) #konvertering til NumPy Array leftEye = form [lStart: lEnd] rightEye = shape [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ramme, "**************** 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.output (summer, GPIO. HIGH)

andet: flag = 0

GPIO.output (summer, GPIO. LOW)

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

Anbefalede: