Innehållsförteckning:
- Steg 1: Saker du behöver
- Steg 2: Python -kod med Eyes Shape Predictor Dataset (PC -version)
- Steg 3: Raspberry Pi -version
Video: Trötthet Varningssystem: 3 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
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
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:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Varningssystem för jord med låg fuktighet för din växt: 5 steg
Varningssystem med låg fuktighet för din växt: I flera bostäder är det vanligt att hitta burkar med olika typer av växter. Och med det stora antalet dagliga aktiviteter glömmer människor att vattna sina växter och de dör på grund av brist på vatten. Som ett sätt att undvika detta problem bestämmer vi
Makey Makey - Tidigt varningssystem för hög vind: 5 steg
Makey Makey - Early Warning System for High Wind: Detta " tidiga varningssystem " designutmaning skulle ges till en grupp studenter. Målet är att ett team av studenter (två eller tre per grupp) ska utforma ett system som varnar människor att söka skydd mot vindar som håller på att bli farliga
Varningssystem för cykellås: 15 steg
Bike Unlock Alert System: Hej alla … !! Hur mår du? Ni har alla fordon i ert hem. Fordonssäkerhet är viktigt för alla. Jag är tillbaka med en liknande typ av projekt. I det här projektet gjorde jag ett varningssystem för cykellås med GSM -modul och Arduino. När cykeln är olåst
Varningssystem för översvämningar - Vattennivåer + IoT -sensorövervakningsguide: 6 steg
Översvämningsvarningssystem - Vattennivåer + IoT -sensorövervakningsguide: Behöver du övervaka vattennivåer? Du lär dig hur man gör vattennivåövervakningssystem i den här självstudien. Dessa industriella IoT -enheter används som varningssystem för översvämningar i USA. För att skydda dig och ditt samhälle måste Smart Cities