Съдържание:

Система за предупреждение за сънливост: 3 стъпки
Система за предупреждение за сънливост: 3 стъпки

Видео: Система за предупреждение за сънливост: 3 стъпки

Видео: Система за предупреждение за сънливост: 3 стъпки
Видео: Жена се върна от 3800 г., за да предупреди 2024, Юли
Anonim
Система за предупреждение за сънливост
Система за предупреждение за сънливост

Всяка година много хора губят живота си поради фатални пътнотранспортни произшествия по света и сънливото шофиране е една от основните причини за пътнотранспортни произшествия и смърт. Умората и микросънят при органите за управление на шофирането често са основната причина за сериозни инциденти. Въпреки това, първоначалните признаци на умора могат да бъдат открити преди възникване на критична ситуация и следователно откриването на умората на водача и нейното посочване е текуща тема на изследване. Повечето от традиционните методи за откриване на сънливост се основават на поведенчески аспекти, докато някои са натрапчиви и могат да разсейват шофьорите, докато някои изискват скъпи сензори. Следователно в този документ е разработена и внедрена лека система за откриване на сънливост на водача в реално време в реално време в приложението за Android. Системата записва видеоклиповете и разпознава лицето на водача във всеки кадър, като използва техники за обработка на изображения. Системата е в състояние да открива ориентири за лицето, изчислява съотношението на окото (EAR) и съотношението на затваряне на очите (ECR), за да открие сънливостта на водача въз основа на адаптивното прагване. Алгоритми за машинно обучение са използвани за тестване на ефикасността на предложения подход. Емпирични резултати показват, че предложеният модел е в състояние да постигне точност от 84% с помощта на случаен горски класификатор.

Стъпка 1: Неща, от които се нуждаете

1. МАЛИНА PI

2. WEBCAM (C270 HD WEB CAM ЗА ПО -ДОБРИ РЕЗУЛТАТИ)

Версията за компютър може да се нуждае от някои промени в кода

Стъпка 2: Python код с набор от данни за предсказване на формата на очите (PC версия)

за да открием много ефективно очите във видео в реално време, можем да използваме този sbelow.dat файл.

drive.google.com/open?id=1UiSHe72L4TeN14VK…

Изтеглете.dat файла от горната връзка и стартирайте долния код на python

Python код

от scipy.spatial разстояние за импортиране от imutils импортиране face_utils импортиране imutils импортиране dlib внос cv2

def eye_aspect_ratio (око):

A = разстояние.euclidean (око [1], око [5]) B = разстояние.euclidean (око [2], око [4]) C = разстояние.euclidean (око [0], око [3]) ухо = (A + B) / (2.0 * C) връщане на ухото удряне = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat файлът е същността на кода

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["ляво_ око"]

(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 (рамка, cv2. COLOR_BGR2GRAY) обекти = откриване (сиво, 0) за обект в обекти: форма = предсказване (сиво, обект) форма = face_utils.shape_to_np (форма)#преобразуване в NumPy Array leftEye = shape [lStart: lEnd] rightEye = форма [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ухо = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2 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 (рамка, "**************** 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 ()

Стъпка 3: Версия на Raspberry Pi

Версия на Raspberry Pi
Версия на Raspberry Pi
Версия на Raspberry Pi
Версия на Raspberry Pi

когато хората затворят очите си, малиновото пи ще ви предупреди

СВЪРЗВЕТЕ вашия зумер към щифт 23 (вижте снимката)

от scipy.spatial разстояние за внос

импортирайте RPi. GPIO като GPIO

от време внос сън

GPIO.setwarnings (False)

GPIO.setmode (GPIO. BCM)

от imutils импортирайте face_utils

import imutils внос dlib import cv2

зумер = 23

GPIO.setup (зумер, GPIO. OUT)

def eye_aspect_ratio (око):

A = разстояние.euclidean (око [1], око [5]) B = разстояние.euclidean (око [2], око [4]) C = разстояние.euclidean (око [0], око [3]) ухо = (A + B) / (2.0 * C) връщане на ухото удряне = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat файлът е същността на кода

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["ляво_ око"]

(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 (рамка, cv2. COLOR_BGR2GRAY) обекти = откриване (сиво, 0) за обект в обекти: форма = предсказване (сиво, обект) форма = face_utils.shape_to_np (форма)#преобразуване в NumPy Array leftEye = shape [lStart: lEnd] rightEye = форма [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ухо = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2 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 (рамка, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.изход (зумер, GPIO. HIGH)

else: флаг = 0

GPIO.изход (зумер, GPIO. LOW)

cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()

Препоръчано: