INHOUDSOPGAWE:

Slaperigheidwaarskuwingstelsel: 3 stappe
Slaperigheidwaarskuwingstelsel: 3 stappe

Video: Slaperigheidwaarskuwingstelsel: 3 stappe

Video: Slaperigheidwaarskuwingstelsel: 3 stappe
Video: Hoe je goede dingen kunt laten gebeuren 2024, November
Anonim
Lomerigheidwaarskuwingstelsel
Lomerigheidwaarskuwingstelsel

Elke jaar verloor baie mense hul lewens weens noodlottige padongelukke regoor die wêreld, en lomerige bestuur is een van die belangrikste oorsake van padongelukke en sterftes. Moegheid en mikro slaap by die bestuurders is dikwels die oorsaak van ernstige ongelukke. Aanvanklike tekens van moegheid kan egter opgespoor word voordat 'n kritieke situasie ontstaan, en die opsporing van die moegheid van die bestuurder en die aanduiding daarvan is 'n deurlopende navorsingsonderwerp. Die meeste tradisionele metodes om lomerigheid op te spoor, is gebaseer op gedragsaspekte, terwyl sommige indringend is en bestuurders kan aflei, terwyl sommige duur sensors benodig. Daarom word in hierdie artikel 'n ligte, real-time bestuurder se lomerigheid-opsporingstelsel ontwikkel en geïmplementeer op Android-toepassings. Die stelsel neem die video's op en bespeur die gesig van die bestuurder in elke raam deur middel van beeldverwerkingstegnieke. Die stelsel is in staat om gesigmerke op te spoor, bereken Eye Aspect Ratio (EAR) en Eye Closure Ratio (ECR) om die bestuurder se lomerigheid op te spoor op grond van adaptiewe drempelwaarde. Masjienleer -algoritmes is gebruik om die doeltreffendheid van die voorgestelde benadering te toets. Empiriese resultate toon aan dat die voorgestelde model 'n akkuraatheid van 84% kan behaal deur willekeurige bosklassifikasie te gebruik.

Stap 1: Dinge wat u nodig het

1. Raspberry PI

2. WEBCAM (C270 HD WEBKAMER VIR BETERE RESULTATE)

Die rekenaarweergawe benodig moontlik 'n paar veranderinge in die kode

Stap 2: Python -kode met oogvormvoorspeller -datastel (rekenaarweergawe)

om die oë baie effektief op te spoor in 'n video in reële tyd, kan ons die onderstaande.dat -lêer gebruik.

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

Laai die.dat -lêer af vanaf die skakel hierbo en voer die onderstaande python -kode uit

Python -kode

vanaf scipy.spatial invoer afstand van imutils invoer face_utils invoer imutils import dlib import cv2

def eye_aspect_ratio (oog):

A = afstand.euclidean (oog [1], oog [5]) B = afstand.euclidean (oog [2], oog [4]) C = afstand.euclidean (oog [0], oog [3]) oor = (A + B) / (2.0 * C) ooroorweer terug = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () voorspel = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -lêer is die kern van die kode

(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 terwyl True: ret, frame = cap.read () frame = imutils.resize (raam, breedte = 450) grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) onderwerpe = opspoor (grys, 0) vir onderwerp in vakke: vorm = voorspel (grys, onderwerp) vorm = gesig_utils.vorm_to_np (vorm) #skakel oor na NumPy Array leftEye = vorm [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 (raam, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (raam, [rightEyeHull], -1, (0, 255, 0), 1) as oor = frame_check: cv2.putText (raam, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (raam, "*************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") anders: vlag = 0 cv2.imshow (" raam ", raam) sleutel = cv2.waitKey (1) en 0xFF as sleutel == ord (" q "): breek cv2.destroyAllWindows () cap.stop ()

Stap 3: Raspberry Pi -weergawe

Framboos Pi weergawe
Framboos Pi weergawe
Framboos Pi weergawe
Framboos Pi weergawe

as die persone sy/haar oë toemaak, sal die framboos -pi u die waarskuwing gee

Koppel u zoemer aan pen 23 (sien die prentjie)

vanaf scipy.spatial invoer afstand

voer RPi. GPIO in as GPIO

van tyd af slaap invoer

GPIO.setwarnings (Onwaar)

GPIO.setmode (GPIO. BCM)

vanaf imutils voer face_utils in

invoer imutils invoer dlib invoer cv2

gonser = 23

GPIO.setup (zoemer, GPIO. OUT)

def eye_aspect_ratio (oog):

A = afstand.euclidean (oog [1], oog [5]) B = afstand.euclidean (oog [2], oog [4]) C = afstand.euclidean (oog [0], oog [3]) oor = (A + B) / (2.0 * C) ooroorweer terug = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () voorspel = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -lêer is die kern van die kode

(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 terwyl True: ret, frame = cap.read () frame = imutils.resize (raam, breedte = 450) grys = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) onderwerpe = opspoor (grys, 0) vir onderwerp in vakke: vorm = voorspel (grys, onderwerp) vorm = gesig_utils.vorm_to_np (vorm) #skakel oor na NumPy Array leftEye = vorm [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 (raam, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (raam, [rightEyeHull], -1, (0, 255, 0), 1) as oor = frame_check: cv2.putText (raam, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (raam, "*************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.uitgang (zoemer, GPIO. HIGH)

anders: vlag = 0

GPIO.output (zoemer, GPIO. LOW)

cv2.imshow ("Frame", raam) sleutel = cv2.waitKey (1) & 0xFF as sleutel == ord ("q"): breek cv2.destroyAllWindows () cap.stop ()

Aanbeveel: