Inhoudsopgave:
- Stap 1: Dingen die je nodig hebt
- Stap 2: Python-code met Eyes Shape Predictor-gegevensset (pc-versie)
- Stap 3: Raspberry Pi-versie
Video: Waarschuwingssysteem voor slaperigheid: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
Elk jaar verliezen veel mensen hun leven als gevolg van dodelijke verkeersongevallen over de hele wereld en slaperig rijden is een van de belangrijkste oorzaken van verkeersongevallen en overlijden. Vermoeidheid en microslaap bij de bedieningselementen zijn vaak de hoofdoorzaak van ernstige ongevallen. De eerste tekenen van vermoeidheid kunnen echter worden gedetecteerd voordat zich een kritieke situatie voordoet en daarom is de detectie van vermoeidheid van de bestuurder en de indicatie daarvan een voortdurend onderzoeksonderwerp. De meeste traditionele methoden om slaperigheid te detecteren zijn gebaseerd op gedragsaspecten, terwijl sommige opdringerig zijn en bestuurders kunnen afleiden, terwijl sommige dure sensoren vereisen. Daarom wordt in dit artikel een lichtgewicht, realtime detectiesysteem voor slaperigheid bij bestuurders ontwikkeld en geïmplementeerd in een Android-applicatie. Het systeem neemt de video's op en detecteert het gezicht van de bestuurder in elk frame door gebruik te maken van beeldverwerkingstechnieken. Het systeem is in staat gezichtsoriëntatiepunten te detecteren en berekent Eye Aspect Ratio (EAR) en Eye Closure Ratio (ECR) om de slaperigheid van de bestuurder te detecteren op basis van adaptieve drempelwaarden. Machine learning-algoritmen zijn gebruikt om de effectiviteit van de voorgestelde aanpak te testen. Empirische resultaten tonen aan dat het voorgestelde model een nauwkeurigheid van 84% kan bereiken met behulp van willekeurige bosclassificatie.
Stap 1: Dingen die je nodig hebt
1. RASPBERRY PI
2. WEBCAM (C270 HD WEBCAM VOOR BETERE RESULTATEN)
De pc-versie heeft mogelijk enkele wijzigingen in de code nodig
Stap 2: Python-code met Eyes Shape Predictor-gegevensset (pc-versie)
om ogen veel effectief te detecteren in een realtime video, kunnen we dit onderstaande.dat-bestand gebruiken.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Download het.dat-bestand van de bovenstaande link en voer de onderstaande python-code uit:
Python-code
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio(oog):
A = afstand.euclidische(oog[1], oog[5]) B = afstand.euclidische(oog[2], oog[4]) C = afstand.euclidische(oog[0], oog[3]) oor = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Dat-bestand is de kern van de code
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["linkeroog"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 while True: ret, frame=cap.read() frame = imutils.resize(frame, grijs = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) onderwerpen = detecteren (grijs, 0) voor onderwerp in onderwerpen: vorm = voorspellen (grijs, onderwerp) vorm = face_utils.shape_to_np(shape)#converting to NumPy Array leftEye = shape[lStart:lEnd] rightEye = vorm[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2cv.convex drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText(frame, "********************ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "****************ALERT! *********** *****", (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()
Stap 3: Raspberry Pi-versie
wanneer de persoon zijn / haar ogen sluit, geeft de Raspberry Pi je een waarschuwing
SLUIT je zoemer aan op pin 23 (zie de foto)
van scipy.spatial import afstand
importeer RPi. GPIO als GPIO
van tijd import slaap
GPIO.setwaarschuwingen (False)
GPIO.setmode(GPIO. BCM)
van imutils import face_utils
import imutils import dlib import cv2
zoemer=23
GPIO.setup (zoemer, GPIO. OUT)
def eye_aspect_ratio(oog):
A = afstand.euclidische(oog[1], oog[5]) B = afstand.euclidische(oog[2], oog[4]) C = afstand.euclidische(oog[0], oog[3]) oor = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Dat-bestand is de kern van de code
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["linkeroog"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 while True: ret, frame=cap.read() frame = imutils.resize(frame, grijs = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) onderwerpen = detecteren (grijs, 0) voor onderwerp in onderwerpen: vorm = voorspellen (grijs, onderwerp) vorm = face_utils.shape_to_np(shape)#converting to NumPy Array leftEye = shape[lStart:lEnd] rightEye = vorm[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2cv.convex drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText(frame, "********************ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "****************ALERT! *********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print ("Dro wsy")
GPIO.output (zoemer, GPIO. HIGH)
anders: vlag = 0
GPIO.output (zoemer, GPIO. LOW)
cv2.imshow("Frame", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): breek cv2.destroyAllWindows() cap.stop()
Aanbevolen:
Hallway Bell-waarschuwingssysteem - Ajarnpa
Hallway Bell Warning System: Op school zijn er bellen die aangeven wanneer er van klas moet worden gewisseld. Ze bellen eerst om aan te geven wanneer de les moet eindigen, en dan bellen ze een tweede keer om aan te geven wanneer de volgende les moet beginnen. Als een leerling te laat is, hebben ze meestal t
Waarschuwingssysteem voor bodem met weinig vocht voor uw plant - Ajarnpa
Waarschuwingssysteem voor bodem met weinig vocht voor uw plant: In verschillende woningen is het gebruikelijk om potten met verschillende soorten planten te vinden. En met het grote aantal dagelijkse activiteiten vergeten mensen hun planten water te geven en sterven ze door gebrek aan water. Om dit probleem te voorkomen, besluiten we
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Waarschuwingssysteem voor onveilig geluidsniveau - Ajarnpa
Waarschuwingssysteem voor onveilig geluidsniveau: de Oshman Engineering Design Kitchen (OEDK) is de grootste makerspace aan de Rice University en biedt alle studenten de ruimte om oplossingen voor echte uitdagingen te ontwerpen en te prototypen. Om dit doel te dienen, herbergt de OEDK een aantal elektrische gereedschappen
HaptiGuard - Zijwaarts waarschuwingssysteem - Ajarnpa
HaptiGuard - Sideway Warning System: snel en direct Sideway Warning-systeem als zijwaarts idee van Personal Photonics of the Media Computing Group Aken, gefinancierd door het Duitse ministerie van onderwijs en wetenschap. Telkens wanneer er iets naar je toekomt dat je niet kunt horen (ofwel omdat o