Innholdsfortegnelse:
- Trinn 1: Ting du trenger
- Trinn 2: Python -kode med datasett for prediktor for øyne (PC -versjon)
- Trinn 3: Raspberry Pi -versjon
Video: Døsighetsvarslingssystem: 3 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hvert år mister mange mennesker livet på grunn av dødelige trafikkulykker rundt om i verden, og døsig kjøring er en av hovedårsakene til trafikkulykker og dødsfall. Tretthet og mikrosøvn ved kjørekontrollene er ofte hovedårsaken til alvorlige ulykker. Imidlertid kan de første tegnene på tretthet oppdages før en kritisk situasjon oppstår, og derfor er detektering av førerens tretthet og indikasjon på det fortsatt et forskningsemne. De fleste tradisjonelle metodene for å oppdage døsighet er basert på atferdsaspekter, mens noen er påtrengende og kan distrahere sjåfører, mens noen krever dyre sensorer. Derfor, i denne artikkelen, er det utviklet og implementert et lett, sanntidssøkingssystem for førers døsighet i systemet. Systemet registrerer videoene og oppdager førerens ansikt i hver ramme ved å bruke bildebehandlingsteknikker. Systemet er i stand til å oppdage ansiktsmerker, beregner Eye Aspect Ratio (EAR) og Eye Closure Ratio (ECR) for å oppdage førers døsighet basert på adaptiv terskel. Maskinlæringsalgoritmer har blitt brukt for å teste effekten av den foreslåtte tilnærmingen. Empiriske resultater viser at den foreslåtte modellen er i stand til å oppnå nøyaktighet på 84% ved bruk av tilfeldig skogsklassifiseringsenhet.
Trinn 1: Ting du trenger
1. RASPBERRY PI
2. WEBCAM (C270 HD WEBKAM FOR BEDRE RESULTATER)
PC -versjonen kan trenge noen endringer i koden
Trinn 2: Python -kode med datasett for prediktor for øyne (PC -versjon)
For å oppdage øyne mye effektivt i en sanntidsvideo, kan vi bruke denne.dat -filen.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Last ned.dat -filen fra lenken ovenfor og kjør python -koden nedenfor
Python -kode
fra scipy.spatial importavstand fra imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (øye):
A = distanse.euclidean (øye [1], øye [5]) B = distanse.euclidean (øye [2], øye [4]) C = avstand.euclidean (øye [0], øye [3]) øre = (A + B) / (2,0 * C) øre -treske tilbake = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen er kjernen 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 motiv i emner: form = forutsi (grå, emne) form = ansikt_utiler.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 (ramme, "**************** VARSEL! *********** ***** ", (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 ()
Trinn 3: Raspberry Pi -versjon
når personene lukker øynene, vil bringebærpi gi deg varsel
KOBLE summeren til pin 23 (se bildet)
fra scipy.spatial importavstand
importer RPi. GPIO som GPIO
fra tid av importer søvn
GPIO.setwarnings (False)
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 (øye):
A = distanse.euclidean (øye [1], øye [5]) B = distanse.euclidean (øye [2], øye [4]) C = avstand.euclidean (øye [0], øye [3]) øre = (A + B) / (2,0 * C) øre -treske tilbake = 0,25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat -filen er kjernen 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 motiv i emner: form = forutsi (grå, emne) form = ansikt_utiler.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 (ramme, "**************** VARSEL! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (summer, GPIO. HIGH)
annet: flagg = 0
GPIO.output (summer, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte