Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04
În fiecare an, mulți oameni își pierd viața din cauza accidentelor rutiere fatale din întreaga lume, iar conducerea somnoroasă este una dintre principalele cauze ale accidentelor rutiere și a morții. Oboseala și somnul mic la comenzile de conducere sunt adesea cauza principală a accidentelor grave. Cu toate acestea, semnele inițiale de oboseală pot fi detectate înainte de apariția unei situații critice și, prin urmare, detectarea oboselii șoferului și indicația acestuia este un subiect de cercetare în curs. Majoritatea metodelor tradiționale de detectare a somnolenței se bazează pe aspecte comportamentale, în timp ce unele sunt intruzive și pot distrage atenția conducătorilor auto, în timp ce unele necesită senzori costisitori. Prin urmare, în această lucrare, un sistem ușor de detectare a somnolenței șoferului în timp real este dezvoltat și implementat pe aplicația Android. Sistemul înregistrează videoclipurile și detectează fața șoferului în fiecare cadru utilizând tehnici de procesare a imaginilor. Sistemul este capabil să detecteze reperele faciale, calculează Eye Aspect Ratio (EAR) și Eye Closure Ratio (ECR) pentru a detecta somnolența șoferului pe baza pragurilor adaptive. Au fost folosiți algoritmi de învățare automată pentru a testa eficacitatea abordării propuse. Rezultatele empirice demonstrează că modelul propus este capabil să obțină o precizie de 84% folosind clasificatorul de pădure aleatoriu.
Pasul 1: Lucruri de care aveți nevoie
1. RASPBERRY PI
2. WEBCAM (C270 HD WEB CAM PENTRU REZULTATE MAI BUNE)
Versiunea PC ar putea avea nevoie de unele modificări ale codului
Pasul 2: Cod Python cu set de date Predictor Eyes Shape (versiunea PC)
pentru a detecta efectiv ochii într-un videoclip în timp real, putem folosi acest fișier.dat de mai jos.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Descărcați fișierul.dat din linkul de mai sus și rulați codul python de mai jos
Cod Python
de la scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (ochi):
A = distance.euclidean (ochi [1], eye [5]) B = distance.euclidean (eye [2], eye [4]) C = distance.euclidean (eye [0], eye [3]) ear = (A + B) / (2.0 * C) întoarce urechea = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat fișierul este esența codului
(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) gri = cv2.cvtColor (cadru, cv2. COLOR_BGR2GRAY) subiecte = detectează (gri, 0) pentru subiect la subiecte: formă = prezice (gri, subiect) forma = față_utile.shape_to_np (formă) #converting la NumPy Array leftEye = formă [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.convexHull. drawContours (cadru, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (cadru, "**************** ALERTĂ! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (cadru, "***************** 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 ()
Pasul 3: Versiunea Raspberry Pi
când persoanele își închid ochii, atunci zmeura pi vă va alerta
CONECTAȚI buzzerul la pinul 23 (vedeți poza)
de la distanță de import scipy.spatial
importați RPi. GPIO ca GPIO
din timp import somn
GPIO.setwarnings (Fals)
GPIO.setmode (GPIO. BCM)
din imutils import face_utils
import imutils import dlib import cv2
buzzer = 23
GPIO.setup (buzzer, GPIO. OUT)
def eye_aspect_ratio (ochi):
A = distance.euclidean (ochi [1], eye [5]) B = distance.euclidean (eye [2], eye [4]) C = distance.euclidean (eye [0], eye [3]) ear = (A + B) / (2.0 * C) întoarce urechea = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat fișierul este esența codului
(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) gri = cv2.cvtColor (cadru, cv2. COLOR_BGR2GRAY) subiecte = detectează (gri, 0) pentru subiect la subiecte: formă = prezice (gri, subiect) forma = față_utile.shape_to_np (formă) #converting la NumPy Array leftEye = formă [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.convexHull drawContours (cadru, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (cadru, "**************** ALERTĂ! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (cadru, "***************** ALERTĂ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (buzzer, GPIO. HIGH)
else: flag = 0
GPIO.output (buzzer, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Recomandat:
Sistem de alertă în caz de accident utilizând GSM, GPS și accelerometru: 5 pași (cu imagini)
Sistem de alertă de accidente care folosește GSM, GPS și accelerometru: vă rog să mă votați pentru concurs Vă rugăm să mă votați pentru concurs În zilele noastre multe persoane au murit pe drum din cauza accidentului, cauza principală fiind „întârzierea salvării”. Această problemă este foarte mare în țările în curs de dezvoltare, așa că am proiectat acest proiect pentru a salva
Sistem de lumină de alertă meteo: 6 pași
Sistem de lumină de alertă meteo: sistemul de iluminare de alertă meteo schimbă iluminarea pentru a indica diferite avertismente meteorologice sau ceasuri. Acest sistem valorifică datele meteorologice accesibile în mod liber pentru a efectua o schimbare a luminii pentru a indica starea vremii. Un pi zmeură (prin nod roșu) verifică
Sistem de alertă a solului cu umiditate scăzută pentru planta dvs.: 5 pași
Sistem de alertă a solului cu umiditate scăzută pentru planta dvs.: În mai multe reședințe, este obișnuit să găsiți borcane cu diferite tipuri de plante. Și cu numărul mare de activități de zi cu zi, oamenii uită să-și udă plantele și ajung să moară din lipsă de apă. Ca modalitate de a evita această problemă, decidem
Sistem de alertă la nivel de zgomot nesigur: 11 pași (cu imagini)
Sistem de avertizare cu nivel de zgomot nesigur: Bucătăria Oshman Engineering Design (OEDK) este cel mai mare spațiu de producție de la Universitatea Rice, oferind un spațiu tuturor studenților pentru a proiecta și a prototipa soluții la provocările din lumea reală. Pentru a îndeplini acest scop, OEDK găzduiește o serie de instrumente electrice
Sistem de alertă deblocare biciclete: 15 pași
Sistem de alertă pentru deblocarea bicicletelor: Hei tuturor … !! Ce mai faci? Aveți cu toții vehicule acasă. Siguranța vehiculului este importantă pentru toți. M-am întors cu un tip similar de proiect. În acest proiect am creat un sistem de alertă pentru deblocarea bicicletelor folosind modulul GSM și Arduino. Când bicicleta este deblocată, ea