
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57

Всяка година много хора губят живота си поради фатални пътнотранспортни произшествия по света и сънливото шофиране е една от основните причини за пътнотранспортни произшествия и смърт. Умората и микросънят при органите за управление на шофирането често са основната причина за сериозни инциденти. Въпреки това, първоначалните признаци на умора могат да бъдат открити преди възникване на критична ситуация и следователно откриването на умората на водача и нейното посочване е текуща тема на изследване. Повечето от традиционните методи за откриване на сънливост се основават на поведенчески аспекти, докато някои са натрапчиви и могат да разсейват шофьорите, докато някои изискват скъпи сензори. Следователно в този документ е разработена и внедрена лека система за откриване на сънливост на водача в реално време в реално време в приложението за 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


когато хората затворят очите си, малиновото пи ще ви предупреди
СВЪРЗВЕТЕ вашия зумер към щифт 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 ()
Препоръчано:
Система за предварително предупреждение за плъзгане: 6 стъпки

Система за предварително предупреждение за слайдове: В Brown Dog Gadgets правим много видео стрийминг за семинари и нашата настройка включва един човек на камерата и още едно лице като продуцент, който изпълнява софтуера, наблюдава прозореца за чат и превключва камерата и напредва слайдовете
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки

Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати
Система за предупреждение при злополука, използваща GSM, GPS и акселерометър: 5 стъпки (със снимки)

Система за предупреждение при злополука, използваща GSM, GPS и акселерометър: Моля, гласувайте за конкурсаМоля, гласувайте ме за конкурса В днешно време много хора загиват на пътя поради инцидент, основната причина е "забавяне на спасяването". Този проблем е много голям в развиващите се страни, затова проектирах този проект за спасяване на
Светлинна система за предупреждение за времето: 6 стъпки

Светлинна система за предупреждение за времето: Системата за метеорологично предупреждение променя осветлението, за да показва различни предупреждения или часовници за времето. Тази система използва свободно достъпни метеорологични данни, за да промени осветлението, за да посочи метеорологичното състояние. Малина pi (чрез node-red) проверява
Система за предупреждение за звънец в коридора: 4 стъпки

Система за предупреждение за звънец в коридора: В училище има звънци, които показват кога трябва да настъпи промяна в класа. Те първо звънят, за да посочат кога класът трябва да приключи, а след това звънят втори път, за да посочат кога следващият клас трябва да започне. Ако един ученик закъснява, те обикновено нямат