Sommario:
- Passaggio 1: cose di cui hai bisogno
- Passaggio 2: codice Python con set di dati predittore della forma degli occhi (versione PC)
- Passaggio 3: versione Raspberry Pi
Video: Sistema di allerta sonnolenza: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ogni anno molte persone perdono la vita a causa di incidenti stradali mortali in tutto il mondo e la sonnolenza alla guida è una delle principali cause di incidenti stradali e morte. La fatica e il microsonno ai comandi di guida sono spesso la causa principale di incidenti gravi. Tuttavia, i primi segni di affaticamento possono essere rilevati prima che si presenti una situazione critica e, pertanto, il rilevamento dell'affaticamento del conducente e la sua indicazione è argomento di ricerca in corso. La maggior parte dei metodi tradizionali per rilevare la sonnolenza si basa su aspetti comportamentali, mentre alcuni sono invadenti e possono distrarre i conducenti, mentre altri richiedono sensori costosi. Pertanto, in questo documento, viene sviluppato e implementato su un'applicazione Android un sistema di rilevamento della sonnolenza del conducente leggero e in tempo reale. Il sistema registra i video e rileva il volto del conducente in ogni fotogramma utilizzando tecniche di elaborazione delle immagini. Il sistema è in grado di rilevare i punti di riferimento del viso, calcola l'Eye Aspect Ratio (EAR) e l'Eye Closure Ratio (ECR) per rilevare la sonnolenza del conducente in base alla soglia adattiva. Sono stati impiegati algoritmi di apprendimento automatico per testare l'efficacia dell'approccio proposto. I risultati empirici dimostrano che il modello proposto è in grado di raggiungere una precisione dell'84% utilizzando un classificatore forestale casuale.
Passaggio 1: cose di cui hai bisogno
1. LAMPONE PI
2. WEBCAM (WEB CAM C270 HD PER RISULTATI MIGLIORI)
La versione per PC potrebbe richiedere alcune modifiche al codice
Passaggio 2: codice Python con set di dati predittore della forma degli occhi (versione PC)
per rilevare gli occhi in modo molto efficace in un video in tempo reale, possiamo usare questo file.dat sotto.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Scarica il file.dat dal link sopra ed esegui il codice Python sottostante
Codice Python
da scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio(occhio):
A = distanza.euclidea(occhio[1], occhio[5]) B = distanza.euclidea(occhio[2], occhio[4]) C = distanza.euclidea(occhio[0], occhio[3]) orecchio = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() forecast = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Il file Dat è il punto cruciale del codice
(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 mentre True: ret, frame=cap.read() frame = imutils.resize(frame, grigio = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) soggetti = rileva (grigio, 0) per il soggetto in soggetti: forma = prevedi (grigio, soggetto) forma = face_utils.shape_to_np(shape)#conversione in NumPy Array leftEye = shape[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(rightEye) 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, "****************AVVISO!*********** *****", (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()
Passaggio 3: versione Raspberry Pi
quando le persone chiudono gli occhi allora il lampone pi ti darà l'avviso
CONNETTI il tuo cicalino al pin 23 (vedi foto)
da scipy.spatial import distance
importa RPi. GPIO come GPIO
dal tempo importa il sonno
GPIO.setwarnings(Falso)
GPIO.setmode(GPIO. BCM)
da imutils import face_utils
import imutils import dlib import cv2
cicalino=23
GPIO.setup (cicalino, GPIO. OUT)
def eye_aspect_ratio(eye):
A = distanza.euclidea(occhio[1], occhio[5]) B = distanza.euclidea(occhio[2], occhio[4]) C = distanza.euclidea(occhio[0], occhio[3]) orecchio = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() forecast = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Il file Dat è il punto cruciale del codice
(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 mentre True: ret, frame=cap.read() frame = imutils.resize(frame, grigio = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) soggetti = rileva (grigio, 0) per il soggetto in soggetti: forma = previsione (grigio, soggetto) forma = face_utils.shape_to_np(shape)#conversione in NumPy Array leftEye = shape[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(rightEye) 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, "****************AVVISO!*********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print ("Dro wsy")
GPIO.output (cicalino, GPIO. HIGH)
altrimenti: bandiera = 0
GPIO.output (cicalino, GPIO. LOW)
cv2.imshow("Frame", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()
Consigliato:
Sistema di allerta meteo: 6 passaggi
Sistema di illuminazione di avviso meteorologico: il sistema di illuminazione di avviso meteorologico cambia l'illuminazione per indicare diversi avvisi o orologi meteorologici. Questo sistema sfrutta i dati meteorologici liberamente accessibili per modificare l'illuminazione e indicare lo stato meteorologico. Un lampone pi (via node-red) controlla il
Sistema di smistamento dei colori: sistema basato su Arduino con due cinghie: 8 passaggi
Color Sorting System: Arduino Based System With Two Belts: Il trasporto e/o confezionamento di prodotti e articoli in ambito industriale avviene tramite linee realizzate con nastri trasportatori. Quelle cinghie aiutano a spostare l'oggetto da un punto all'altro con una velocità specifica. Alcune attività di elaborazione o identificazione possono essere
Makey Makey - Sistema di allerta precoce per vento forte: 5 passaggi
Makey Makey - Sistema di allarme rapido per vento forte: questo "sistema di allarme rapido" la sfida progettuale sarebbe stata affidata a un gruppo di studenti. L'obiettivo è che un team di studenti (due o tre per gruppo) progetti un sistema che avverta le persone di cercare riparo dai venti che stanno diventando pericolosi
Sistema di allarme antincendio con Arduino [in pochi semplici passaggi]: 3 passaggi
Sistema di allarme antincendio con Arduino [in pochi semplici passaggi]: stai cercando di realizzare un progetto semplice e interessante con Arduino che allo stesso tempo possa essere davvero utile e potenzialmente salvavita? Se sì, sei arrivato nel posto giusto per imparare qualcosa di nuovo e innovativo. In questo post andiamo
Come collegare e configurare correttamente un sistema di scaffale Mini HiFi (sistema audio): 8 passaggi (con immagini)
Come collegare e configurare correttamente un sistema di mensole mini HiFi (sistema audio): sono una persona a cui piace imparare l'ingegneria elettrica. Sono un liceo presso la Ann Richards School for Young Women Leaders. Sto rendendo questo istruttivo per aiutare chiunque voglia godersi la propria musica da un Mini LG HiFi Shelf Syste