Spisu treści:
- Krok 1: Rzeczy, których potrzebujesz
- Krok 2: Kod Pythona z zestawem danych predyktora kształtu oczu (wersja na komputery PC)
- Krok 3: Wersja Raspberry Pi
Wideo: System ostrzegania o senności: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Każdego roku wiele osób traci życie w wyniku śmiertelnych wypadków drogowych na całym świecie, a senna jazda jest jedną z głównych przyczyn wypadków drogowych i śmierci. Zmęczenie i mikrosen za sterami jazdy są często główną przyczyną poważnych wypadków. Jednak wstępne oznaki zmęczenia można wykryć jeszcze przed wystąpieniem krytycznej sytuacji, dlatego wykrywanie zmęczenia kierowcy i jego wskazywanie jest ciągłym tematem badawczym. Większość tradycyjnych metod wykrywania senności opiera się na aspektach behawioralnych, podczas gdy niektóre są nachalne i mogą rozpraszać kierowców, a niektóre wymagają drogich czujników. Dlatego w niniejszym artykule opracowano i zaimplementowano lekki system wykrywania senności kierowcy w czasie rzeczywistym na aplikacji Android. System rejestruje filmy i wykrywa twarz kierowcy w każdej klatce, wykorzystując techniki przetwarzania obrazu. System jest w stanie wykrywać punkty orientacyjne twarzy, oblicza współczynnik kształtu oczu (EAR) i współczynnik zamknięcia oczu (ECR), aby wykryć senność kierowcy na podstawie progu adaptacyjnego. Do przetestowania skuteczności proponowanego podejścia wykorzystano algorytmy uczenia maszynowego. Wyniki empiryczne pokazują, że proponowany model jest w stanie osiągnąć dokładność 84% przy użyciu losowego klasyfikatora lasu.
Krok 1: Rzeczy, których potrzebujesz
1. MALINOWY PI
2. KAMERA INTERNETOWA (KAMERA INTERNETOWA C270 HD DLA LEPSZYCH WYNIKÓW)
Wersja na PC może wymagać pewnych zmian w kodzie
Krok 2: Kod Pythona z zestawem danych predyktora kształtu oczu (wersja na komputery PC)
aby skutecznie wykrywać oczy w wideo w czasie rzeczywistym, możemy użyć poniższego pliku.dat.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Pobierz plik.dat z powyższego linku i uruchom poniższy kod Pythona
Kod w Pythonie
ze scipy.spatial importuj odległośćz imutils importuj face_utils importuj imutils importuj dlib importuj cv2
def proporcja_oczu (oko):
A = odległość.euklidesowa(oko[1], oko[5]) B = odległość.euklidesowa(oko[2], oko[4]) C = odległość.euklidesowa(oko[0], oko[3]) ucho = (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")# Plik Dat jest sednem kodu
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["lewe_oko"]
(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, gray = cv2.cvtColor(ramka, cv2. COLOR_BGR2GRAY) przedmioty = wykryj(szary, 0) dla przedmiotu w przedmiotach: shape = przewidywaj(szary, przedmiot) shape = face_utils.shape_to_np(shape)#konwertowanie do NumPy Array leftEye = shape[lStart:lEnd] rightEye = shape[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull2 drawContours(ramka, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(ramka, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText(ramka, "********************UWAGA!******************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(ramka, "****************UWAGA!*********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #drukuj ("Dro wsy") else: flag = 0 cv2.imshow("Ramka", ramka) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()
Krok 3: Wersja Raspberry Pi
gdy osoba zamknie oczy, wtedy Raspberry Pi da ci ostrzeżenie
PODŁĄCZ brzęczyk do pinu 23 (patrz zdjęcie)
z odległości importu scipy.spatial
importuj RPi. GPIO jako GPIO
od czasu importuj sen
GPIO.setwarnings (Fałsz)
GPIO.setmode(GPIO. BCM)
z imutils importuj face_utils
importuj imutils importuj dlib importuj cv2
brzęczyk=23
GPIO.setup(brzęczyk, GPIO. OUT)
def proporcja_oczu (oko):
A = odległość.euklidesowa(oko[1], oko[5]) B = odległość.euklidesowa(oko[2], oko[4]) C = odległość.euklidesowa(oko[0], oko[3]) ucho = (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")# Plik Dat jest sednem kodu
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["lewe_oko"]
(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, gray = cv2.cvtColor(ramka, cv2. COLOR_BGR2GRAY) przedmioty = wykryj(szary, 0) dla przedmiotu w przedmiotach: shape = przewidywaj(szary, przedmiot) shape = face_utils.shape_to_np(shape)#konwertowanie do NumPy Array leftEye = shape[lStart:lEnd] rightEye = shape[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull2 drawContours(ramka, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(ramka, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText(ramka, "********************UWAGA!******************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(ramka, "****************UWAGA!*********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #drukuj ("Dro wysy")
GPIO.output(brzęczyk, GPIO. HIGH)
w przeciwnym razie: flaga = 0
GPIO.output(brzęczyk, GPIO. LOW)
cv2.imshow("Ramka", ramka) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()
Zalecana:
System ostrzegania o parkowaniu cofania samochodu Arduino - Krok po kroku: 4 kroki
System ostrzegania o parkowaniu cofania samochodu Arduino | Kroki po kroku: W tym projekcie zaprojektuję prosty obwód czujnika parkowania wstecznego samochodu Arduino za pomocą czujnika ultradźwiękowego Arduino UNO i HC-SR04. Ten oparty na Arduino system ostrzegania o cofaniu samochodu może być używany do autonomicznej nawigacji, określania odległości robotów i innych
System ostrzegania przed dzwonkiem w korytarzu: 4 kroki
System ostrzegania przed dzwonkiem na korytarzu: W szkole są dzwonki, które wskazują, kiedy powinna nastąpić zmiana klasy. Najpierw dzwonią, aby wskazać, kiedy mają się skończyć zajęcia, a następnie dzwonią po raz drugi, aby wskazać, kiedy mają się rozpocząć następne zajęcia. Jeśli uczeń się spóźnia, zwykle ma
HaptiGuard - system ostrzegania bocznego: 3 kroki (ze zdjęciami)
HaptiGuard - Boczny System Ostrzegania: Szybki i beznadziejny Boczny System Ostrzegania jako boczny pomysł Personal Photonics of the Media Computing Group Aachen, finansowany przez niemieckie Ministerstwo Edukacji i Nauki. Ilekroć przychodzi ci coś ubranego, czego nie możesz usłyszeć (ponieważ
System ostrzegania o deszczu: 4 kroki
System ostrzegania o deszczu: jest to system ostrzegania o deszczu, alarm i dioda LED aktywują się i ostrzegają użytkownika, że wkrótce będzie padać, grupa docelowa tej aplikacji to osoby, które suszą ubrania w domu, wiedzą o tym mogą zachować swoje ubrania bez
ISO Standardowy system ostrzegania o sterczących uszach wilkołaka: 3 kroki (ze zdjęciami)
System ostrzegania o sterczących uszach wilkołaka zgodny ze standardem ISO: Nikt nie lubi, gdy ktoś lub coś niespodziewanie pojawia się z tyłu. Ponieważ większość ludzi nie ma dostrojonego zmysłu pająków, dodaj elektronikę, aby wykryć, kiedy coś się czai. Chroń swoją szóstkę. Bo jest tak zimno