Obsah:
- Krok 1: Veci, ktoré potrebujete
- Krok 2: Sada údajov prediktora Pythonovho kódu s tvarom očí (verzia pre PC)
- Krok 3: Verzia Raspberry Pi
Video: Systém výstrahy ospalosti: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
Každý rok príde mnoho ľudí o život v dôsledku smrteľných dopravných nehôd na celom svete a ospalá jazda je jednou z hlavných príčin dopravných nehôd a úmrtí. Únava a mikrospánok pri ovládaní jazdy sú často hlavnou príčinou vážnych nehôd. Počiatočné známky únavy je však možné zistiť ešte pred vznikom kritickej situácie, a preto je detekcia únavy vodiča a jej indikácia pokračujúcou témou výskumu. Väčšina tradičných metód na detekciu ospalosti je založená na behaviorálnych aspektoch, zatiaľ čo niektoré sú rušivé a môžu rušiť vodičov, zatiaľ čo niektoré vyžadujú drahé senzory. V tomto príspevku je preto vyvinutý a implementovaný ľahký systém detekcie ospalosti vodiča v reálnom čase, ktorý je implementovaný v aplikácii pre Android. Systém zaznamenáva videá a v každom snímke detekuje tvár vodiča pomocou techník spracovania obrazu. Tento systém je schopný detekovať orientačné body tváre, vypočítať pomer strán (EAR) a pomer zatvorenia očí (ECR) na detekciu ospalosti vodiča na základe adaptívneho prahovania. Na testovanie účinnosti navrhovaného prístupu boli použité algoritmy strojového učenia. Empirické výsledky ukazujú, že navrhovaný model je schopný dosiahnuť presnosť 84% pomocou náhodného klasifikátora lesa.
Krok 1: Veci, ktoré potrebujete
1. MALINA PI
2. WEBCAM (WEBOVÁ CAMERA C270 HD ZA LEPŠIE VÝSLEDKY)
Verzia pre počítač môže vyžadovať určité zmeny v kóde
Krok 2: Sada údajov prediktora Pythonovho kódu s tvarom očí (verzia pre PC)
na efektívnu detekciu očí vo videu v reálnom čase môžeme použiť tento sbelow.dat súbor.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Stiahnite si súbor.dat z vyššie uvedeného odkazu a spustite nižšie 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 = vzdialenosť.euclidean (oko [1], oko [5]) B = vzdialenosť.euclidean (oko [2], oko [4]) C = vzdialenosť.euclidean (oko [0], oko [3]) ucho = (A + B) / (2,0 * C) návratnosť úderu ucha = 0,25 kontrola rámca = 20 detekcia = dlib.get_frontal_face_detector () predikcia = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datový súbor je jadrom 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ám, cv2. COLOR_BGR2GREY) predmety = detekovať (sivá, 0) pre predmet v subjektoch: tvar = predpovedať (sivý, predmet) tvar = face_utils.shape_to_np (tvar) #konvertovať na NumPy Array leftEye = tvar [lStart: lEnd] rightEye = tvar [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (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ámček, „**************** ALERT! ***************“, (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (rám, "*************** UPOZORNENIE! *********** ***** ", (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: Verzia Raspberry Pi
keď osoby zatvoria oči, potom vás upozorní malinová pi
PRIPOJTE bzučiak na kolík 23 (pozri obrázok)
zo scipy.priestorovej importnej vzdialenosti
importujte RPi. GPIO ako GPIO
z času importu spánku
GPIO.setwarnings (False)
GPIO.setmode (GPIO. BCM)
z imutils import face_utils
import imutils import dlib import cv2
bzučiak = 23
GPIO.setup (bzučiak, GPIO. OUT)
def eye_aspect_ratio (oko):
A = vzdialenosť.euclidean (oko [1], oko [5]) B = vzdialenosť.euclidean (oko [2], oko [4]) C = vzdialenosť.euclidean (oko [0], oko [3]) ucho = (A + B) / (2,0 * C) návratnosť úderu ucha = 0,25 kontrola rámca = 20 detekcia = dlib.get_frontal_face_detector () predikcia = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datový súbor je jadrom 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ám, cv2. COLOR_BGR2GRAY) subjekty = detekovať (sivá, 0) pre predmet v subjektoch: tvar = predpovedať (sivý, predmet) tvar = face_utils.shape_to_np (tvar) #konvertovať 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ámček, „**************** ALERT! ***************“, (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (rám, "*************** UPOZORNENIE! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (bzučiak, GPIO. HIGH)
else: flag = 0
GPIO.output (bzučiak, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Odporúča:
Nebezpečný systém výstrahy úrovne hluku: 11 krokov (s obrázkami)
Nebezpečný systém výstrahy úrovne hluku: Oshman Engineering Design Kitchen (OEDK) je najväčší priestor na univerzite v Rice, ktorý poskytuje všetkým študentom priestor na navrhovanie a prototypovanie riešení výziev v reálnom svete. Na tento účel má OEDK niekoľko elektrických nástrojov
Systém výstrahy pred dažďom: 4 kroky
Rain Alert System: Jedná sa o Rain Alert System, alarm a LED dióda sa aktivujú a varujú užívateľa, že čoskoro bude pršať. Cieľové publikum pre túto aplikáciu je pre tých ľudí, ktorí si oblečú oblečenie na sušenie doma, to vedia môžu si svoje oblečenie nechať pri sebe
SMS textové teplotné výstrahy z ATTINY85 a A1 GSM: 5 krokov
SMS textové teplotné výstrahy z ATTINY85 a A1 GSM: Tento návod vám ukáže, ako zachytiť teplotu z jednoduchého teplotného senzora a odoslať ju SMS správou na váš mobilný telefón. Aby som to zjednodušil, odosielam teplotu v nastavenom intervale, ale tiež ukazujem, ako sa to dá dosiahnuť iba vynikajúcim spôsobom
Monitorovanie závodu a výstrahy s cloudom IoT ESP8266 a AskSensors: 6 krokov
Monitorovanie závodu a výstrahy S cloudom internetu vecí ESP8266 a AskSensors: Tento projekt je zameraný na vybudovanie inteligentného systému monitorovania zariadení pomocou platformy ESP8266 a platformy IoT AskSensors. Tento systém je možné použiť na sledovanie úrovne vlhkosti pôdy a poskytnutie objektívnych kritérií pre rozhodnutia o zavlažovaní. ktoré pomáhajú zaistiť zavlažovanie
Vlnová lampa - počasie a výstrahy: 7 krokov (s obrázkami)
Wave Lamp - Počasie a výstrahy: Pri prehliadaní vecí, ktoré som videl, som videl túto úplne úžasnú lampu Wave a MUSELI SOM ju postaviť. https://www.thingiverse.com/thing:774456Lampa je veľmi dobre navrhnutá a tlačí bez akýchkoľvek podpier (je potrebné ju vytlačiť na bočnú stranu). K dispozícii je tiež