Оглавление:
- Шаг 1. Вещи, которые вам нужны
- Шаг 2. Код Python с набором данных для прогнозирования формы глаз (версия для ПК)
- Шаг 3: версия Raspberry Pi
Видео: Система оповещения о сонливости: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
Ежегодно во всем мире многие люди гибнут в результате дорожно-транспортных происшествий со смертельным исходом, и сонное вождение является одной из основных причин дорожно-транспортных происшествий и смертей. Усталость и микросон при управлении автомобилем часто являются первопричиной серьезных аварий. Однако первые признаки усталости могут быть обнаружены до того, как возникнет критическая ситуация, и поэтому определение усталости водителя и ее индикация является предметом постоянных исследований. Большинство традиционных методов определения сонливости основаны на поведенческих аспектах, некоторые навязчивы и могут отвлекать водителей, а некоторые требуют дорогих датчиков. Поэтому в этой статье легкая система обнаружения сонливости водителя в режиме реального времени разработана и реализована в приложении Android. Система записывает видео и определяет лицо водителя в каждом кадре, используя методы обработки изображений. Система способна обнаруживать лицевые ориентиры, вычислять соотношение сторон глаза (EAR) и коэффициент закрытия глаз (ECR) для определения сонливости водителя на основе адаптивного определения порога. Алгоритмы машинного обучения были использованы для проверки эффективности предложенного подхода. Эмпирические результаты показывают, что предложенная модель может достигать точности 84% при использовании случайного классификатора леса.
Шаг 1. Вещи, которые вам нужны
1. малиновый PI
2. WEBCAM (ВЕБ-КАМЕРА C270 HD ДЛЯ ЛУЧШИХ РЕЗУЛЬТАТОВ)
Версия для ПК может потребовать некоторых изменений в коде
Шаг 2. Код Python с набором данных для прогнозирования формы глаз (версия для ПК)
Для более эффективного обнаружения глаз в видео в реальном времени мы можем использовать этот файл.dat ниже.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Загрузите файл.dat по ссылке выше и запустите указанный ниже код Python.
Код Python
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (глаз):
A = расстояние. Евклидово (глаз [1], глаз [5]) B = расстояние. Евклидово (глаз [2], глаз [4]) C = расстояние. Евклидово (глаз [0], глаз [3]) ухо = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () pred = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat-файл является сутью кода
(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, в то время как True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) серый = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) темы = обнаружить (серый, 0) для объекта в субъектах: shape = прогнозировать (серый, объект) shape = face_utils.shape_to_np (shape) # преобразовывать в NumPy Array leftEye = shape [lStart: lEnd] rightEye = форма [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = 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 (frame, "**************** ПРЕДУПРЕЖДЕНИЕ! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** 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 предупредит вас
ПОДКЛЮЧИТЕ свой зуммер к контакту 23 (см. Рисунок)
от расстояния импорта scipy.spatial
импортировать RPi. GPIO как GPIO
от времени импортный сон
GPIO.setwarnings (Ложь)
GPIO.setmode (GPIO. BCM)
из imutils import face_utils
импорт imutils импорт dlib импорт cv2
зуммер = 23
GPIO.setup (зуммер, GPIO. OUT)
def eye_aspect_ratio (глаз):
A = расстояние. Евклидово (глаз [1], глаз [5]) B = расстояние. Евклидово (глаз [2], глаз [4]) C = расстояние. Евклидово (глаз [0], глаз [3]) ухо = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predic = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat-файл является сутью кода
(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, в то время как True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) серый = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) themes = detect (gray, 0) for subject in themes: shape = pred (gray, subject) shape = face_utils.shape_to_np (shape) #converting to NumPy Array leftEye = shape [lStart: lEnd] rightEye = форма [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = 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 (frame, "**************** ПРЕДУПРЕЖДЕНИЕ! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (зуммер, GPIO. HIGH)
иначе: flag = 0
GPIO.output (зуммер, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF, если key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Рекомендуемые:
Система оповещения о парковке автомобиля на базе Arduino - Шаг за шагом: 4 шага
Система оповещения о парковке автомобиля на базе Arduino | Пошагово: в этом проекте я спроектирую простую схему датчика парковки заднего хода Arduino с использованием ультразвукового датчика Arduino UNO и HC-SR04. Эта система оповещения о реверсе автомобиля на базе Arduino может использоваться для автономной навигации, определения дальности роботов и других диапазонов r
Система оповещения об авариях с использованием GSM, GPS и акселерометра: 5 шагов (с изображениями)
Система оповещения об авариях с использованием GSM, GPS и акселерометра: проголосуйте за меня в конкурсеПожалуйста, проголосуйте за меня в конкурсе В настоящее время многие люди погибают на дороге из-за аварии, основная причина - "задержка спасения". Эта проблема очень серьезна в странах, где ведется разработка, поэтому я разработал этот проект для сохранения
Стандартная система оповещения об оборотнях «Веселые уши» ISO: 3 шага (с изображениями)
Стандартная система оповещения об оборотнях ISO: Никому не нравится, когда кто-то или что-то неожиданно появляется позади вас. Поскольку у большинства людей нет тонко настроенного паучьего чутья, добавьте электронику, чтобы обнаруживать, когда что-то скрывается за спиной. Защитите свою шестерку. Потому что на улице так холодно
Система оповещения о лесных пожарах Gps с Sim808 и Arduino Uno: 23 шага (с изображениями)
Система оповещения о лесных пожарах Gps с Sim808 и Arduino Uno: Здравствуйте, в этом посте мы увидим, как создать систему обнаружения лесных пожаров с уведомлением текстовым сообщением о месте аварии, благодаря встроенному модулю gps sim808, предоставленный людьми DFRobot, мы увидим источник
Система оповещения S45-SMS: 4 шага
Система оповещения S45-SMS: возможно, ваша серверная система перегрелась … обязательно получите сигнал об этом … где бы вы ни находились