Sisukord:

Unisuse hoiatussüsteem: 3 sammu
Unisuse hoiatussüsteem: 3 sammu

Video: Unisuse hoiatussüsteem: 3 sammu

Video: Unisuse hoiatussüsteem: 3 sammu
Video: Страшные истории. Странные правила ТСЖ. Ночью он забрался в наш дом. Ужасы 2024, Juuli
Anonim
Unisuse hoiatussüsteem
Unisuse hoiatussüsteem

Igal aastal kaotavad paljud inimesed surmaga lõppenud liiklusõnnetuste tõttu kogu maailmas elu ning unine sõitmine on üks peamisi liiklusõnnetuste ja surma põhjuseid. Väsimus ja mikroune sõidurežiimis on sageli tõsiste õnnetuste algpõhjus. Esialgseid väsimuse märke saab siiski tuvastada enne kriitilise olukorra tekkimist ja seetõttu on juhi väsimuse avastamine ja selle näidustus jätkuv uurimisteema. Enamik traditsioonilisi uimasuse tuvastamise meetodeid põhineb käitumuslikel aspektidel, samas kui mõned on pealetükkivad ja võivad juhtide tähelepanu kõrvale juhtida, mõned aga vajavad kalleid andureid. Seetõttu on käesolevas dokumendis välja töötatud ja rakendatud Androidi rakenduses kergekaaluline reaalajas juhi unisuse tuvastamise süsteem. Süsteem salvestab videod ja tuvastab pilditöötlusmeetodite abil juhi näo igas kaadris. Süsteem on võimeline tuvastama näo maamärke, arvutab silmaaspektisuhte (EAR) ja silmade sulgemise suhte (ECR), et tuvastada juhi uimasus adaptiivse lävepaku põhjal. Kavandatud lähenemisviisi tõhususe testimiseks on kasutatud masinõppe algoritme. Empiirilised tulemused näitavad, et pakutud mudel suudab juhusliku metsaklassifikaatori abil saavutada 84% täpsuse.

Samm: asjad, mida vajate

1. VAARIKAS PI

2. WEBCAM (C270 HD WEB CAM PAREMATE TULEMUSTE saamiseks)

Arvuti versioon võib vajada koodi muutmist

2. samm: Pythoni kood silmade kujuga ennustaja andmekogumiga (arvuti versioon)

et reaalajas videos silmi palju tõhusamalt tuvastada, saame kasutada seda sbelow.dat -faili.

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

Laadige alla.dat -fail ülaltoodud lingilt ja käivitage allolev python -kood

Pythoni kood

from scipy.spatial import distance from imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (silm):

A = kaugus. Eukleidiline (silm [1], silm [5]) B = kaugus. Eukleidiline (silm [2], silm [4]) C = kaugus. Eukleidiline (silm [0], silm [3]) kõrv = A + B)

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["vasak_silm"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) lipp = 0 samas tõsi: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) hall = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) subjektid = tuvastavad (hall, 0) objekti subjektidel: kuju = ennustab (hall, objekt) kuju = näo_liigud.kuju_to_np (kuju) #konverteerub NumPy massiiviks leftEye = kuju [lStart: lEnd] rightEye = kuju [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull (cv2.convexHull) drawContours (raam, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (raam, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (raam, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (raam, "**************** HOIATUS! *********** ***** ", (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 ()

Samm: Raspberry Pi versioon

Raspberry Pi versioon
Raspberry Pi versioon
Raspberry Pi versioon
Raspberry Pi versioon

kui inimesed silmad sulgevad, annab vaarika pi teile märguande

Ühendage oma summeri tihvtiga 23 (vt pilti)

alates scipy.spatial impordi kaugus

RPi. GPIO importimine GPIO -na

ajast importige uni

GPIO.setwarnings (vale)

GPIO.setmode (GPIO. BCM)

alates imutils import face_utils

import imutils import dlib import cv2

helisignaal = 23

GPIO.seadistus (sumin, GPIO. OUT)

def eye_aspect_ratio (silm):

A = kaugus. Eukleidiline (silm [1], silm [5]) B = kaugus. Eukleidiline (silm [2], silm [4]) C = kaugus. Eukleidiline (silm [0], silm [3]) kõrv = A + B)

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["vasak_silm"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) lipp = 0 samas tõsi: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) hall = cv2.cvtColor (raam, cv2. COLOR_BGR2GRAY) subjektid = tuvastavad (hall, 0) objekti subjektidel: kuju = ennustab (hall, subjekt) kuju = näo_liigud.kuju_to_np (kuju) #konverteerib NumPy massiivi leftEye = kuju [lStart: lEnd] rightEye = kuju [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull (cv2.convexHull) drawContours (raam, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (raam, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (raam, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (raam, "**************** HOIATUS! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO väljund (sumin, GPIO. HIGH)

muu: lipp = 0

GPIO.väljund (sumin, GPIO. LOW)

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

Soovitan: