Kazalo:
- Korak: Stvari, ki jih potrebujete
- Korak: Koda Python z naborom napovedovalcev oblike oči (različica za računalnik)
- 3. korak: Različica Raspberry Pi
Video: Sistem opozarjanja na zaspanost: 3 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Vsako leto veliko ljudi izgubi življenje zaradi prometnih nesreč s smrtnim izidom po vsem svetu, zaspana vožnja pa je eden glavnih vzrokov prometnih nesreč in smrti. Utrujenost in mikro spanje na upravljalni opremi sta pogosto glavni vzrok hudih nesreč. Vendar pa je mogoče prve znake utrujenosti odkriti, preden nastopi kritična situacija, zato je odkrivanje utrujenosti voznika in njeno navajanje stalna raziskovalna tema. Večina tradicionalnih metod odkrivanja zaspanosti temelji na vedenjskih vidikih, nekatere pa so vsiljive in lahko motijo voznike, nekatere pa zahtevajo drage senzorje. Zato je v tem prispevku razvit in lahek sistem za zaznavanje zaspanosti voznika v realnem času, ki se uporablja v aplikaciji Android. Sistem snema video posnetke in zazna voznikov obraz v vsakem kadru z uporabo tehnik obdelave slik. Sistem lahko zazna obrazne mejnike, izračuna razmerje stranic oči (EAR) in razmerje zapiranja oči (ECR), da zazna voznikovo zaspanost na podlagi prilagodljivega praga. Za preverjanje učinkovitosti predlaganega pristopa so bili uporabljeni algoritmi strojnega učenja. Empirični rezultati kažejo, da lahko predlagani model doseže natančnost 84% z uporabo naključnega klasifikatorja gozda.
Korak: Stvari, ki jih potrebujete
1. MALINA PI
2. WEBCAM (Spletna kamera HD C270 za boljše rezultate)
V računalniški različici bodo morda potrebne nekatere spremembe kode
Korak: Koda Python z naborom napovedovalcev oblike oči (različica za računalnik)
za učinkovitejše zaznavanje oči v videoposnetku v realnem času lahko uporabimo to datoteko sbelow.dat.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Prenesite datoteko.dat z zgornje povezave in zaženite spodnjo kodo python
Koda Python
from scipy.spatial import distancefrom imutils import face_utils import imutils uvoz dlib uvoz cv2
def eye_aspect_ratio (oko):
A = razdalja.euclidean (oko [1], oko [5]) B = razdalja.euclidean (oko [2], oko [4]) C = razdalja.euklidsko (oko [0], oko [3]) uho = (A + B) / (2,0 * C) vrnitev ušesa = 0,25 frame_check = 20 detektiraj = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datoteka je bistvo kode
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (okvir, cv2. COLOR_BGR2GRAY) subjekti = zaznavanje (sivo, 0) za motiv pri subjektih: shape = predvidi (sivo, predmet) shape = face_utils.shape_to_np (shape) #prehod v NumPy Array leftEye = shape [lStart: lEnd] rightEye = oblika [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) uho = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2. Vuk2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (okvir, "**************** OPOZORILO! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (okvir, "**************** OPOZORILO! *********** ***** ", (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. korak: Različica Raspberry Pi
ko osebe zaprejo oči, vas bo malina pi opozorila
Priključite zvočni signal na pin 23 (glejte sliko)
from scipy.prostorna uvozna razdalja
uvozite RPi. GPIO kot GPIO
od časa uvoza spanja
GPIO.setwarnings (False)
Način GPIO.set (GPIO. BCM)
from imutils uvoz face_utils
import imutils uvoz dlib import cv2
zvočni signal = 23
GPIO.setup (zvočni signal, GPIO. OUT)
def eye_aspect_ratio (oko):
A = razdalja.euclidean (oko [1], oko [5]) B = razdalja.euclidean (oko [2], oko [4]) C = razdalja.euklidsko (oko [0], oko [3]) uho = (A + B) / (2,0 * C) vrnitev ušesa = 0,25 frame_check = 20 detektiraj = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datoteka je bistvo kode
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (okvir, cv2. COLOR_BGR2GRAY) subjekti = zaznavanje (sivo, 0) za motiv pri subjektih: shape = predvidi (sivo, predmet) shape = face_utils.shape_to_np (shape) #prehod v NumPy Array leftEye = shape [lStart: lEnd] rightEye = oblika [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) uho = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2. Vuk2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (okvir, "**************** OPOZORILO! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (okvir, "**************** OPOZORILO! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
Izhod GPIO. (zvočni signal, GPIO. HIGH)
drugo: zastava = 0
Izhod GPIO. (zvočni signal, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Priporočena:
Arduino Sistem opozarjanja na parkirišče za vzvratno vožnjo - Korak za korakom: 4 koraki
Arduino Sistem opozarjanja na parkirišče za vzvratno vožnjo | Koraki po korakih: V tem projektu bom z ultrazvočnim senzorjem Arduino UNO in HC-SR04 oblikoval preprosto vezje za vzvratno parkiranje avtomobila Arduino. Ta sistem za opozarjanje avtomobila za vzvratno vožnjo, ki temelji na Arduinu, se lahko uporablja za avtonomno navigacijo, robotsko merjenje in drugo območje
Sistem opozarjanja na nesrečo z uporabo GSM, GPS in merilnika pospeška: 5 korakov (s slikami)
Sistem za opozarjanje ob nesrečah z uporabo GSM -ja, GPS -ja in merilnika pospeška: Prosim, glasujte me za tekmovanjeProsimo, glasujte me za tekmovanje.Danes je na cesti zaradi nesreče umrlo veliko ljudi, glavni vzrok pa je "zamuda pri reševanju". Ta problem je v državah v razvoju zelo velik, zato sem ta projekt zasnoval za reševanje
Makey Makey - Sistem zgodnjega opozarjanja na močan veter: 5 korakov
Makey Makey - Sistem zgodnjega opozarjanja na močan veter: Ta " sistem zgodnjega opozarjanja " oblikovalski izziv bi dobila skupina študentov. Cilj je, da skupina študentov (dva ali trije v skupini) oblikuje sistem, ki opozarja ljudi, naj poiščejo zavetje pred vetrovi, ki postajajo nevarni
Sistem opozarjanja na gozdni požar GPS s Sim808 in Arduino Uno: 23 korakov (s slikami)
Sistem za opozarjanje na požarni požar GPS s Sim808 in Arduino Uno: Pozdravljeni, v tem prispevku bomo videli, kako po zaslugi vgrajenega modula GPS sim808 narediti detektor gozdnega požara z obvestilom po besedilnem sporočilu o lokaciji nesreče, odobrili ljudje DFRobot, bomo videli vir
Raspberry Pi nadzorovano spremljanje sobne temperature z izhodom slike Gnuplot in zmožnostjo opozarjanja po e -pošti: 7 korakov
Raspberry Pi nadzorovano spremljanje sobne temperature z izhodom slike Gnuplot in zmožnostjo opozarjanja po e -pošti: tam, kjer delam, je zelo pomembna soba, v kateri je veliko računalnikov. Temperatura okolice v tem prostoru mora biti zelo hladna, da se optimizira delovanje teh sistemov. Prosili so me, naj pripravim sistem za spremljanje, ki lahko