INHOUDSOPGAWE:
- Stap 1: Dinge wat u nodig het
- Stap 2: Python -kode met oogvormvoorspeller -datastel (rekenaarweergawe)
- Stap 3: Raspberry Pi -weergawe
Video: Slaperigheidwaarskuwingstelsel: 3 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
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
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:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies