Table des matières:
- Étape 1: choses dont vous avez besoin
- Étape 2: Python Code With Eyes Shape Predictor Dataset (version PC)
- Étape 3: Version Raspberry Pi
Vidéo: Système d'alerte de somnolence : 3 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Chaque année, de nombreuses personnes perdent la vie à cause d'accidents de la route mortels dans le monde et la somnolence au volant est l'une des principales causes d'accidents de la route et de décès. La fatigue et le micro-sommeil aux commandes de conduite sont souvent à l'origine d'accidents graves. Cependant, les premiers signes de fatigue peuvent être détectés avant qu'une situation critique ne se produise et, par conséquent, la détection de la fatigue du conducteur et son indication sont un sujet de recherche en cours. La plupart des méthodes traditionnelles de détection de la somnolence sont basées sur des aspects comportementaux, tandis que certaines sont intrusives et peuvent distraire les conducteurs, tandis que d'autres nécessitent des capteurs coûteux. Par conséquent, dans cet article, un système léger de détection de somnolence du conducteur en temps réel est développé et mis en œuvre sur une application Android. Le système enregistre les vidéos et détecte le visage du conducteur dans chaque image en utilisant des techniques de traitement d'image. Le système est capable de détecter les repères faciaux, calcule le rapport d'aspect des yeux (EAR) et le rapport de fermeture des yeux (ECR) pour détecter la somnolence du conducteur sur la base d'un seuil adaptatif. Des algorithmes d'apprentissage automatique ont été utilisés pour tester l'efficacité de l'approche proposée. Les résultats empiriques démontrent que le modèle proposé est capable d'atteindre une précision de 84 % en utilisant un classificateur de forêt aléatoire.
Étape 1: choses dont vous avez besoin
1. FRAMBOISE PI
2. WEBCAM (WEB CAM C270 HD POUR DE MEILLEURS RÉSULTATS)
La version PC peut nécessiter quelques modifications dans le code
Étape 2: Python Code With Eyes Shape Predictor Dataset (version PC)
pour détecter les yeux de manière très efficace dans une vidéo en temps réel, nous pouvons utiliser ce fichier.dat ci-dessous.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Téléchargez le fichier.dat à partir du lien ci-dessus et exécutez le code python ci-dessous
Code Python
de scipy.spatial importer distancefrom imutils importer face_utils importer imutils importer dlib importer cv2
def eye_aspect_ratio(eye):
A = distance.euclidienne(œil[1], œil[5]) B = distance.euclidienne(œil[2], œil[4]) C = distance.euclidienne(œil[0], œil[3]) oreille = (A + B) / (2.0 * C) return ear seuil = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Le fichier Dat est le nœud du code
(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 tandis que True: ret, frame=cap.read() frame = imutils.resize(frame, gris = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) sujets = détecter (gris, 0) pour le sujet dans les sujets: shape = prédire (gris, sujet) shape = face_utils.shape_to_np(shape)#conversion en NumPy Array leftEye = shape[lStart:lEnd] rightEye = forme[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) cv2. drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) si ear = frame_check: cv2.putText(frame, "******************ALERTE !****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "****************** ALERTE !********** *****", (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()
Étape 3: Version Raspberry Pi
quand la personne ferme les yeux alors le raspberry pi vous donnera l'alerte
CONNECTEZ votre buzzer à la broche 23 (voir l'image)
à partir de la distance d'importation scipy.spatial
importer RPi. GPIO en tant que GPIO
du temps importer le sommeil
GPIO.setwarnings(False)
GPIO.setmode(GPIO. BCM)
depuis imutils importer face_utils
importer imutils importer dlib importer cv2
buzzer=23
GPIO.setup(buzzer, GPIO. OUT)
def eye_aspect_ratio(eye):
A = distance.euclidienne(œil[1], œil[5]) B = distance.euclidienne(œil[2], œil[4]) C = distance.euclidienne(œil[0], œil[3]) oreille = (A + B) / (2.0 * C) return ear seuil = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Le fichier Dat est le nœud du code
(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 tandis que True: ret, frame=cap.read() frame = imutils.resize(frame, gris = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) sujets = détecter (gris, 0) pour le sujet dans les sujets: shape = prédire (gris, sujet) shape = face_utils.shape_to_np(shape)#conversion en NumPy Array leftEye = shape[lStart:lEnd] rightEye = forme[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) cv2. drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) si ear = frame_check: cv2.putText(frame, "******************ALERTE !****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(frame, "****************** ALERTE !********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print ("Dro wsy")
GPIO.sortie (buzzer, GPIO. HIGH)
sinon: indicateur = 0
GPIO.sortie (buzzer, GPIO. LOW)
cv2.imshow("Frame", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()
Conseillé:
Système d'alerte avancé de diapositive : 6 étapes
Slide Advance Alert System : Chez Brown Dog Gadgets, nous faisons beaucoup de streaming vidéo pour les ateliers, et notre configuration comprend une personne à la caméra et une autre personne en tant que producteur qui exécute le logiciel, surveille la fenêtre de discussion et effectue la commutation et les avancées de la caméra. les diapositives
Système d'alerte de stationnement en marche arrière Arduino - Étapes par étape : 4 étapes
Système d'alerte de stationnement en marche arrière Arduino | Étapes par étape : dans ce projet, je vais concevoir un circuit de capteur de stationnement inversé pour voiture Arduino simple à l'aide d'un capteur à ultrasons Arduino UNO et HC-SR04. Ce système d'alerte de marche arrière basé sur Arduino peut être utilisé pour une navigation autonome, une télémétrie de robot et d'autres r
Système d'alerte d'accident utilisant GSM, GPS et accéléromètre : 5 étapes (avec photos)
Système d'alerte d'accident utilisant le GSM, le GPS et l'accéléromètre : veuillez me voter pour le concoursVeuillez me voter pour le concours De nos jours, de nombreuses personnes sont décédées sur la route à cause d'un accident, la cause principale est le « retard dans le sauvetage ». Ce problème est très important dans les pays en développement, j'ai donc conçu ce projet pour sauver le
Système de lumière d'alerte météo : 6 étapes
Système d'éclairage d'alerte météo : Le système d'éclairage d'alerte météo modifie l'éclairage pour indiquer différents avertissements ou montres météorologiques. Ce système exploite les données météorologiques librement accessibles pour modifier l'éclairage afin d'indiquer l'état de la météo. Un raspberry pi (via node-red) vérifie le
Système d'alerte de sol à faible humidité pour votre plante : 5 étapes
Système d'alerte de sol à faible teneur en eau pour votre plante : Dans plusieurs résidences, il est courant de trouver des pots avec différents types de plantes. Et avec le grand nombre d'activités quotidiennes, les gens oublient d'arroser leurs plantes et finissent par mourir de manque d'eau. Pour éviter ce problème, nous avons décidé