Obsah:
- Krok 1: Věci, které potřebujete
- Krok 2: Python Code With Eyes Shape Predictor Dataset (PC verze)
- Krok 3: Verze Raspberry Pi
Video: Systém upozornění na ospalost: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
Každý rok mnoho lidí přijde o život v důsledku smrtelných dopravních nehod na celém světě a ospalá jízda je jednou z hlavních příčin dopravních nehod a úmrtí. Únava a mikrospánek při řízení jsou často hlavní příčinou vážných nehod. Počáteční známky únavy lze však zjistit ještě před vznikem kritické situace, a proto je detekce únavy řidiče a její indikace pokračujícím tématem výzkumu. Většina tradičních metod detekce ospalosti je založena na behaviorálních aspektech, zatímco některé jsou rušivé a mohou rušit řidiče, zatímco některé vyžadují drahé senzory. V tomto příspěvku je proto vyvinut a implementován lehký systém detekce ospalosti řidiče v reálném čase v aplikaci pro Android. Systém zaznamenává videa a detekuje tvář řidiče v každém snímku pomocí technik zpracování obrazu. Systém je schopen detekovat orientační body obličeje, vypočítat poměr stran (EAR) a poměr zavření očí (ECR) k detekci ospalosti řidiče na základě adaptivního prahování. K testování účinnosti navrhovaného přístupu byly použity algoritmy strojového učení. Empirické výsledky ukazují, že navrhovaný model je schopen dosáhnout přesnosti 84% pomocí náhodného klasifikátoru lesa.
Krok 1: Věci, které potřebujete
1. Raspberry PI
2. WEBCAM (WEBOVÁ CAMERA C270 HD PRO LEPŠÍ VÝSLEDKY)
Verze pro PC může vyžadovat nějaké změny v kódu
Krok 2: Python Code With Eyes Shape Predictor Dataset (PC verze)
abychom mohli efektivně detekovat oči ve videu v reálném čase, můžeme použít tento sbelow.dat soubor.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Stáhněte si soubor.dat z výše uvedeného odkazu a spusťte níže uvedený kód pythonu
Python kód
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (oko):
A = vzdálenost.euclidean (oko [1], oko [5]) B = vzdálenost.euclidean (oko [2], oko [4]) C = vzdálenost.euclidean (oko [0], oko [3]) ucho = (A + B) / (2,0 * C) návrat ucha mlátit = 0,25 kontrola rámce = 20 detekovat = dlib.get_frontal_face_detector () předpovědět = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datový soubor je jádrem kódu
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (rámeček, cv2. COLOR_BGR2GRAY) předměty = detekce (šedá, 0) pro předmět v předmětech: tvar = předpovídat (šedá, předmět) tvar = face_utils.shape_to_np (tvar)#převod na NumPy Array leftEye = tvar [lStart: lEnd] rightEye = tvar [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ucho = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ucho = frame_check: cv2.putText (rámeček, „**************** ALERT! ***************“, (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (rámeček, "**************** 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 ()
Krok 3: Verze Raspberry Pi
když osoby zavřou oči, pak vám malinový pi dá výstrahu
PŘIPOJTE bzučák ke kolíku 23 (viz obrázek)
ze scipy.prostorové vzdálenosti importu
importujte RPi. GPIO jako GPIO
z časového importu spánku
GPIO.setwarnings (False)
GPIO.setmode (GPIO. BCM)
z imutils import face_utils
import imutils import dlib import cv2
bzučák = 23
GPIO.setup (bzučák, GPIO. OUT)
def eye_aspect_ratio (oko):
A = vzdálenost.euclidean (oko [1], oko [5]) B = vzdálenost.euclidean (oko [2], oko [4]) C = vzdálenost.euclidean (oko [0], oko [3]) ucho = (A + B) / (2,0 * C) návrat ucho mlátit = 0,25 kontrola rámce = 20 detekovat = dlib.get_frontal_face_detector () předpovědět = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datový soubor je jádrem kódu
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (rámeček, cv2. COLOR_BGR2GRAY) předměty = detekce (šedá, 0) pro předmět v předmětech: tvar = předpovídat (šedá, předmět) tvar = face_utils.shape_to_np (tvar)#převod na NumPy Array leftEye = tvar [lStart: lEnd] rightEye = tvar [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ucho = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ucho = frame_check: cv2.putText (rámeček, „**************** ALERT! ***************“, (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (rámeček, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (bzučák, GPIO. HIGH)
else: flag = 0
GPIO.output (bzučák, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Doporučuje:
Systém upozornění na zpětné parkování Arduino - Krok za krokem: 4 kroky
Systém varování při couvání auta Arduino | Krok za krokem: V tomto projektu navrhnu jednoduchý obvod zpětného parkovacího senzoru Arduino do auta pomocí ultrazvukového senzoru Arduino UNO a HC-SR04. Tento výstražný systém Car Reverse na bázi Arduino může být použit pro autonomní navigaci, pohyb robotů a další rozsahy
Systém upozornění na počasí: 6 kroků
Weather Alert Light System: Systém upozornění na počasí mění osvětlení tak, aby indikoval různá varování o počasí nebo hodinky. Tento systém využívá volně přístupná data o počasí k provedení změny osvětlení pro indikaci stavu počasí. Raspberry pi (přes node-red) kontroluje
Proveďte výstražný systém hovoru / hlasového upozornění: 4 kroky
Vytvořte varovný systém Talking / Voice Notification: Tento projekt jsme vytvořili Talking / Voice Notification and Warning System. V tomto projektu lze použít alespoň dva senzory
Nebezpečný systém upozornění na hladinu hluku: 11 kroků (s obrázky)
Nebezpečný výstražný systém úrovně hluku: Oshman Engineering Design Kitchen (OEDK) je největší tvůrčí prostor na univerzitě v Rice a poskytuje prostor všem studentům při navrhování a prototypování řešení skutečných výzev. Za tímto účelem má OEDK řadu elektrických nástrojů
Systém upozornění ISO Standard Werewolf Perky Ears Alert: 3 kroky (s obrázky)
Systém ISO Werewolf Perky Ears Alert System: Nikdo nemá rád, když za vámi někdo nebo něco nečekaně přijde. Vzhledem k tomu, že většina lidí nemá vyladěný spidey-sense, přidejte elektroniku, která detekuje, když se něco skrývá zpět. Chraňte svých šest. Protože je venku taková zima