Sadržaj:
- Korak 1: Stvari koje trebate
- Korak 2: Python kod sa skupom podataka predviđanja oblika oblika očiju (verzija za računalo)
- Korak 3: Raspberry Pi verzija
Video: Sustav upozorenja na pospanost: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Svake godine mnogi ljudi izgube živote zbog fatalnih prometnih nesreća diljem svijeta, a pospana vožnja jedan je od primarnih uzroka prometnih nesreća i smrti. Umor i mikro spavanje na upravljačkim kontrolama često su uzrok ozbiljnih nesreća. Međutim, početni znakovi umora mogu se otkriti prije nego što dođe do kritične situacije, pa je otkrivanje umora vozača i njegova indikacija tekuća tema istraživanja. Većina tradicionalnih metoda za otkrivanje pospanosti temelji se na aspektima ponašanja, dok su neke nametljive i mogu omesti vozače, dok neke zahtijevaju skupe senzore. Stoga je u ovom radu lagan sustav za otkrivanje pospanosti vozača u stvarnom vremenu razvijen i implementiran u Android aplikaciju. Sustav snima video zapise i detektira vozačevo lice u svakom kadru primjenom tehnika obrade slike. Sustav je sposoban otkriti orijentire lica, izračunava Eye Aspect Ratio (EAR) i Eye Closure Ratio (ECR) kako bi otkrio vozačevu pospanost na temelju prilagodljivog praga. Za provjeru učinkovitosti predloženog pristupa upotrijebljeni su algoritmi strojnog učenja. Empirijski rezultati pokazuju da predloženi model može postići točnost od 84% pomoću slučajnog klasifikatora šuma.
Korak 1: Stvari koje trebate
1. MALINA PI
2. WEBCAM (C270 HD WEB KAMENA ZA BOLJE REZULTATE)
Verzija računala možda će trebati neke promjene u kodu
Korak 2: Python kod sa skupom podataka predviđanja oblika oblika očiju (verzija za računalo)
za učinkovitije otkrivanje očiju u videozapisu u stvarnom vremenu možemo upotrijebiti ovu sbelow.dat datoteku.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Preuzmite.dat datoteku s gornje veze i pokrenite donji python kod
Python kod
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def_odnos_odnosa_oka (oko):
A = udaljenost.euklidsko (oko [1], oko [5]) B = udaljenost.euklidsko (oko [2], oko [4]) C = udaljenost.euklidsko (oko [0], oko [3]) uho = (A + B) / (2.0 * C) povratni prag uha = 0.25 frame_check = 20 detektiraj = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datoteka je srž koda
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["lijevo_ 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, width = 450) grey = cv2.cvtColor (okvir, cv2. COLOR_BGR2GRAY) subjekti = otkrivanje (sivo, 0) za subjekt u subjektima: shape = predvidjeti (sivo, subjekt) shape = face_utils.shape_to_np (shape) #prebacivanje na NumPy Polje leftEye = oblik [lStart: lEnd] rightEye = oblik [rStart: rEnd] leftEAR = okom_ogled_omjera (lijevo oko) desnoEAR = oko_aspekt_mjer (desno oko) uho = (lijevoEAR + desnoUŠE) / 2.0 lijevoOkoHull = cv2.konveksni Hull (lijevo oko) desnoEyeHull2 cv2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (okvir, "**************** Upozorenje! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (okvir, "**************** Upozorenje! *********** ***** ", (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 ()
Korak 3: Raspberry Pi verzija
kad osobe zatvore oči, malina pi će vas upozoriti
PRIKLJUČITE zujalicu na pin 23 (pogledajte sliku)
od scipy.prostorna uvozna udaljenost
uvezite RPi. GPIO kao GPIO
od vremena uvoz sna
GPIO.setwarnings (False)
Način rada GPIO.set (GPIO. BCM)
from imutils uvoz face_utils
import imutils uvoz dlib import cv2
zujalica = 23
GPIO.setup (zujalica, GPIO. OUT)
def_odnos_odnosa_oka (oko):
A = udaljenost.euklidsko (oko [1], oko [5]) B = udaljenost.euklidsko (oko [2], oko [4]) C = udaljenost.euklidsko (oko [0], oko [3]) uho = (A + B) / (2.0 * C) povratni prag uha = 0.25 frame_check = 20 detektiraj = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Datoteka je srž koda
(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["lijevo_ 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, width = 450) grey = cv2.cvtBoja (okvir, cv2. COLOR_BGR2GRAY) subjekti = otkrivanje (sivo, 0) za subjekt u subjektima: oblik = predviđanje (sivo, subjekt) oblik = face_utils.shape_to_np (oblik) #prevođenje u NumPy niz lijevo oko = oblik [lStart: lEnd] rightEye = oblik [rStart: rEnd] leftEAR = okom_smjera_omjera (lijevo oko) desnoEAR = oko_aspekt_mjer (desno oko) uho = (lijevoUŠE + desnoUŠE) / 2.0 lijevoOkoHull = cv2.konveksni Hull (lijevo oko) desnoEyeHull2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (okvir, "**************** Upozorenje! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) cv2.putText (okvir, "**************** Upozorenje! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.izlaz (zujalica, GPIO. HIGH)
else: flag = 0
GPIO.izlaz (zujalica, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Preporučeni:
Sustav naprednog upozorenja klizanjem: 6 koraka
Sustav upozorenja s slajdovima: Na Brown Dog Gadgetima radimo mnogo video streaminga za radionice, a naša postavka uključuje jednu osobu na kameri i drugu osobu kao producenta koja pokreće softver, nadzire prozor za chat te mijenja kameru i napreduje slajdovi
Sustav upozorenja o nesreći pomoću GSM -a, GPS -a i akcelerometra: 5 koraka (sa slikama)
Sustav upozorenja o nesreći pomoću GSM -a, GPS -a i mjerača brzine: Molimo glasajte me za natjecanjeMolim vas, glasajte me za natjecanjeDanas je mnogo ljudi poginulo na cesti zbog nesreće, glavni uzrok je "kašnjenje u spašavanju". Ovaj je problem vrlo velik u zemljama u razvoju pa sam osmislio ovaj projekt za spremanje
Svjetlosni sustav upozorenja na vremenske uvjete: 6 koraka
Svjetlosni sustav svjetla upozorenja na vremenske uvjete: Svjetlosni sustav upozorenja na promjenu vremena mijenja osvjetljenje kako bi ukazao na različita vremenska upozorenja ili satove. Ovaj sustav koristi slobodno dostupne vremenske podatke za promjenu osvjetljenja kako bi ukazao na vremenske prilike. Malina pi (preko node-red) provjerava
Sustav upozorenja na hodnik: 4 koraka
Sustav upozorenja na hodnik: U školi postoje zvona koja pokazuju kada bi se trebala dogoditi promjena razreda. Prvo zvone kako bi naznačili kada bi klasa trebala završiti, a zatim zvone drugi put kako bi naznačili kada bi sljedeća klasa trebala početi. Ako student kasni, obično nema t
Učinite sustav upozorenja za govorne / glasovne obavijesti: 4 koraka
Napravite sustav upozorenja za govorne / glasovne obavijesti: Ovaj projekt smo napravili za govorni / glasovni sustav obavijesti i upozorenja. U ovom projektu mogu se koristiti najmanje dva senzora