Tabla de contenido:
- Paso 1: Cosas que necesita
- Paso 2: Código Python con conjunto de datos del predictor de forma de ojos (versión para PC)
- Paso 3: Versión de Raspberry Pi
Video: Sistema de alerta de somnolencia: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Cada año, muchas personas pierden la vida debido a accidentes de tráfico mortales en todo el mundo y conducir con sueño es una de las principales causas de accidentes de tráfico y muerte. La fatiga y el micro sueño en los controles de conducción son a menudo la causa principal de accidentes graves. Sin embargo, los signos iniciales de fatiga se pueden detectar antes de que surja una situación crítica y, por lo tanto, la detección de la fatiga del conductor y su indicación es un tema de investigación en curso. La mayoría de los métodos tradicionales para detectar la somnolencia se basan en aspectos del comportamiento, mientras que algunos son intrusivos y pueden distraer a los conductores, mientras que algunos requieren sensores costosos. Por lo tanto, en este documento, se desarrolla e implementa un sistema de detección de somnolencia del conductor en tiempo real y liviano en la aplicación de Android. El sistema graba los videos y detecta la cara del conductor en cada cuadro mediante el empleo de técnicas de procesamiento de imágenes. El sistema es capaz de detectar puntos de referencia faciales, calcula la relación de aspecto del ojo (EAR) y la relación de cierre del ojo (ECR) para detectar la somnolencia del conductor según el umbral adaptativo. Se han empleado algoritmos de aprendizaje automático para probar la eficacia del enfoque propuesto. Los resultados empíricos demuestran que el modelo propuesto puede lograr una precisión del 84% utilizando un clasificador de bosque aleatorio.
Paso 1: Cosas que necesita
1 FRAMBUESA PI
2. WEBCAM (C270 HD WEB CAM PARA MEJORES RESULTADOS)
La versión para PC puede necesitar algunos cambios en el código.
Paso 2: Código Python con conjunto de datos del predictor de forma de ojos (versión para PC)
Para detectar ojos de manera mucho más efectiva en un video en tiempo real, podemos usar este archivo.dat a continuación.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Descargue el archivo.dat del enlace de arriba y ejecute el siguiente código de Python
Código Python
desde scipy.spatial import distanciadesde imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (ojo):
A = distancia.euclidean (ojo [1], ojo [5]) B = distancia.euclidean (ojo [2], ojo [4]) C = distancia.euclidean (ojo [0], ojo [3]) oído = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # El archivo Dat es el quid del código
(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) gray = cv2.: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHullye = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (marco, "**************** ¡ALERTA! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ¡ALERTA! *********** ***** ", (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 ()
Paso 3: Versión de Raspberry Pi
cuando las personas cierren los ojos, la frambuesa pi te dará la alerta
CONECTE su zumbador al pin 23 (vea la imagen)
desde la distancia de importación scipy.spatial
importar RPi. GPIO como GPIO
desde el momento de importar el sueño
GPIO.setwarnings (falso)
GPIO.setmode (GPIO. BCM)
de imutils importar face_utils
importar imutils importar dlib importar cv2
zumbador = 23
GPIO.setup (zumbador, GPIO. OUT)
def eye_aspect_ratio (ojo):
A = distancia.euclidiana (ojo [1], ojo [5]) B = distancia.euclidiana (ojo [2], ojo [4]) C = distancia.euclidiana (ojo [0], ojo [3]) oído = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # El archivo Dat es el quid del código
(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) gray = cv2.: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHullye = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (marco, "**************** ¡ALERTA! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ¡ALERTA! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")
Salida GPIO (zumbador, GPIO. HIGH)
más: bandera = 0
Salida GPIO (zumbador, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Recomendado:
Sistema de alerta de estacionamiento en reversa para automóviles Arduino - Paso a paso: 4 pasos
Sistema de alerta de estacionamiento en reversa para automóviles Arduino | Paso a paso: en este proyecto, diseñaré un circuito de sensor de estacionamiento inverso de automóvil Arduino simple usando Arduino UNO y el sensor ultrasónico HC-SR04. Este sistema de alerta de marcha atrás de coche basado en Arduino se puede utilizar para una navegación autónoma, rango de robot y otros rangos r
Sistema de alerta de accidentes mediante GSM, GPS y acelerómetro: 5 pasos (con imágenes)
Sistema de alerta de accidentes con GSM, GPS y acelerómetro: Vótame para el concurso Votame para el concurso Hoy en día, muchas personas mueren en la carretera debido a un accidente, la causa principal es el " retraso en el rescate ". Este problema es muy grande en los países en desarrollo, así que diseñé este proyecto para salvar el
Sistema de luz de alerta meteorológica: 6 pasos
Sistema de luz de alerta meteorológica: el sistema de iluminación de alerta meteorológica cambia la iluminación para indicar diferentes advertencias o relojes meteorológicos. Este sistema aprovecha los datos meteorológicos de libre acceso para realizar un cambio de iluminación para indicar el estado del tiempo. Una frambuesa pi (a través de node-red) comprueba
Sistema de alerta de suelo con poca humedad para su planta: 5 pasos
Sistema de alerta de suelo de baja humedad para su planta: En varias residencias, es común encontrar frascos con diferentes tipos de plantas. Y con la gran cantidad de actividades del día a día, la gente se olvida de regar sus plantas y acaban muriendo por falta de agua. Para evitar este problema, decidimos
Makey Makey - Sistema de alerta temprana para vientos fuertes: 5 pasos
Makey Makey - Sistema de alerta temprana para vientos fuertes: este " sistema de alerta temprana " El desafío de diseño se le daría a un grupo de estudiantes. El objetivo es que un equipo de estudiantes (dos o tres por grupo) diseñe un sistema que advierte a las personas que busquen refugio de los vientos que se están volviendo peligrosos