Obsah:

Systém výstrahy ospalosti: 3 kroky
Systém výstrahy ospalosti: 3 kroky

Video: Systém výstrahy ospalosti: 3 kroky

Video: Systém výstrahy ospalosti: 3 kroky
Video: 10 самых безопасных внедорожников на 2021 год ▶ Выживание 2024, Júl
Anonim
Systém výstrahy ospalosti
Systém výstrahy ospalosti

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

Verzia Raspberry Pi
Verzia Raspberry Pi
Verzia Raspberry Pi
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: