Innehållsförteckning:

Trötthet Varningssystem: 3 steg
Trötthet Varningssystem: 3 steg

Video: Trötthet Varningssystem: 3 steg

Video: Trötthet Varningssystem: 3 steg
Video: 3 Steg för att bota psykisk ohälsa Naturligt. (F*** antidepressiva tabletter ) 2024, Juli
Anonim
System för varningslarm
System för varningslarm

Varje år mister många människor livet på grund av dödliga trafikolyckor runt om i världen och dåsig körning är en av de främsta orsakerna till trafikolyckor och dödsfall. Trötthet och mikrosömn vid körreglagen är ofta orsaken till allvarliga olyckor. Dock kan initiala tecken på trötthet detekteras innan en kritisk situation uppstår och därför är detektering av förarens trötthet och dess indikation ett pågående forskningsämne. De flesta av de traditionella metoderna för att upptäcka dåsighet är baserade på beteendemässiga aspekter, medan vissa är påträngande och kan distrahera förare, medan vissa kräver dyra sensorer. Därför, i detta dokument, utvecklas och implementeras ett lättviktigt, realtidsförarsystem för detektering av dåsighet i sömn i Android-applikationer. Systemet spelar in videoklippen och detekterar förarens ansikte i varje bildruta genom att använda bildbehandlingstekniker. Systemet kan upptäcka ansiktsmärken, beräknar Eye Aspect Ratio (EAR) och Eye Closure Ratio (ECR) för att upptäcka förarens dåsighet baserat på adaptiv tröskelvärde. Maskininlärningsalgoritmer har använts för att testa effekten av det föreslagna tillvägagångssättet. Empiriska resultat visar att den föreslagna modellen kan uppnå en noggrannhet på 84% med slumpmässig skogsklassificerare.

Steg 1: Saker du behöver

1. RASPBERRY PI

2. WEBCAM (C270 HD -WEBBKAMA FÖR BÄTTRE RESULTAT)

PC -version kan behöva några ändringar i koden

Steg 2: Python -kod med Eyes Shape Predictor Dataset (PC -version)

för att upptäcka ögon mycket effektivt i en video i realtid kan vi använda den här.dat -filen.

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

Ladda ner.dat -filen från ovanstående länk och kör pythonkoden nedan

Python -kod

från scipy.spatial importavstånd från imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (öga):

A = avstånd.euclidean (öga [1], öga [5]) B = avstånd.euclidean (öga [2], öga [4]) C = avstånd.euklidiskt (öga [0], öga [3]) öra = (A + B) / (2,0 * C) returörs tröskan = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () förutsäga = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen är kärnan 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) flagga = 0 medan True: ret, frame = cap.read () frame = imutils.resize (ram, bredd = 450) grå = cv2.cvtColor (ram, cv2. COLOR_BGR2GRAY) ämnen = detektera (grå, 0) för motiv i ämnen: form = förutsäga (grå, ämne) form = ansikte_utsl.form_till_np (form) #konvertera till 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 (ram, "***************** ALERT! *****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (ram, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ") else: flagga = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Steg 3: Raspberry Pi -version

Raspberry Pi -version
Raspberry Pi -version
Raspberry Pi -version
Raspberry Pi -version

när personerna stänger sina ögon kommer hallonpi att ge dig en varning

ANSLUT din summer till stift 23 (se bilden)

från scipy.spatial importavstånd

importera RPi. GPIO som GPIO

från tid importera sömn

GPIO.setwarnings (falskt)

GPIO.setmode (GPIO. BCM)

från imutils importera face_utils

import imutils import dlib import cv2

summer = 23

GPIO.setup (summer, GPIO. OUT)

def eye_aspect_ratio (öga):

A = avstånd.euclidean (öga [1], öga [5]) B = avstånd.euclidean (öga [2], öga [4]) C = avstånd.euklidiskt (öga [0], öga [3]) öra = (A + B) / (2,0 * C) returörs tröskan = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () förutsäga = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen är kärnan 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) flagga = 0 medan True: ret, frame = cap.read () frame = imutils.resize (ram, bredd = 450) grå = cv2.cvtColor (ram, cv2. COLOR_BGR2GRAY) ämnen = detektera (grå, 0) för motiv i ämnen: form = förutsäga (grå, ämne) form = ansikte_utiler.form_till_np (form) #konvertering till 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 (ram, "***************** ALERT! *****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (ram, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.output (summer, GPIO. HIGH)

annars: flagga = 0

GPIO.output (summer, GPIO. LOW)

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

Rekommenderad: