Sadržaj:
- Korak 1: Stvari koje trebate
- Korak 2: Python kod sa skupom podataka predviđanja oblika oblika očiju (verzija za PC)
- Korak 3: Raspberry Pi verzija
Video: Sistem upozorenja o pospanosti: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Svake godine mnogi ljudi izgube živote zbog fatalnih saobraćajnih nesreća širom svijeta, a pospana vožnja jedan je od primarnih uzroka saobraćajnih nesreća i smrti. Umor i mikro san u kontrolama vožnje često su osnovni 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 stalna tema istraživanja. Većina tradicionalnih metoda za otkrivanje pospanosti zasnovana je na aspektima ponašanja, dok su neke nametljive i mogu ometati vozače, dok neke zahtijevaju skupe senzore. Stoga je u ovom radu lagan sistem za otkrivanje pospanosti vozača u stvarnom vremenu razvijen i implementiran u Android aplikaciju. Sistem snima video zapise i detektuje vozačevo lice u svakom kadru koristeći tehnike obrade slika. Sistem je sposoban otkriti orijentire lica, izračunava Eye Aspect Ratio (EAR) i Eye Closure Ratio (ECR) kako bi otkrio vozačevu pospanost na osnovu prilagodljivog praga. Algoritmi strojnog učenja korišteni su za provjeru učinkovitosti predloženog pristupa. 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)
PC verziji će možda trebati neke promjene u kodu
Korak 2: Python kod sa skupom podataka predviđanja oblika oblika očiju (verzija za PC)
za učinkovitije otkrivanje očiju u videu u stvarnom vremenu, možemo koristiti ovu sbelow.dat datoteku.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Preuzmite.dat datoteku sa 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 eye_aspect_ratio (oko):
A = udaljenost.euklidska (oko [1], oko [5]) B = udaljenost.euklidska (oko [2], oko [4]) C = udaljenost.euklidska (oko [0], oko [3]) uho = (A + B) / (2.0 * C) povratni prag uha = 0.25 frame_check = 20 detection = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat datoteka je srž koda
(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 dok je 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_aspekt_omjera (lijevo oko) desnoEAR = oko_aspekt_mjer (desno oko) uho = (lijevoEAR + desnoEAR) / 2.0 lijevoOkoHull = cv2.convexHull (lijevo oko) desnoEyeHull2 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 (frame, "**************** ALERT! ****************", (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
kada osoba zatvori oči, malina pi će vas upozoriti
PRIKLJUČITE zujalicu na pin 23 (pogledajte sliku)
from scipy.spatial import distance
uvezite RPi. GPIO kao GPIO
od vremena uvoza sleep
GPIO.setwarnings (False)
Način rada GPIO.set (GPIO. BCM)
from imutils import face_utils
import imutils uvoz dlib import cv2
zujalica = 23
GPIO.setup (zujalica, GPIO. OUT)
def eye_aspect_ratio (oko):
A = udaljenost.euklidska (oko [1], oko [5]) B = udaljenost.euklidska (oko [2], oko [4]) C = udaljenost.euklidska (oko [0], oko [3]) uho = (A + B) / (2.0 * C) povratni prag uha = 0.25 frame_check = 20 detection = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat datoteka je srž koda
(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 dok je 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_aspekt_omjera (lijevo oko) desnoEAR = oko_aspekt_mjer (desno oko) uho = (lijevoEAR + desnoUŠE) / 2.0 lijevoOkoHull = cv2.convexHull (lijevo oko) desnoEyeHull2 cv2Vok2 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 (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čuje se:
Sistem kliznog upozorenja: 6 koraka
Sistem slajdova unaprijed upozorenja: U Brown Dog Gadgets -u radimo mnogo video streaminga za radionice, a naše postavljanje uključuje jednu osobu na kameri i drugu osobu kao producenta koja pokreće softver, nadzire prozor za chat i mijenja kameru i napreduje slajdove
Arduino Sistem upozorenja za vožnju unatrag za automobil - Koraci po korak: 4 koraka
Arduino Sistem upozorenja za vožnju unatrag za automobil | Koraci po korak: U ovom projektu dizajnirat ću jednostavan Arduino krug senzora za parkiranje unatrag automobila koristeći Arduino UNO i HC-SR04 ultrazvučni senzor. Ovaj sistem upozorenja za vožnju unatrag baziran na Arduinu može se koristiti za autonomnu navigaciju, domet robota i drugi domet
Sistem upozorenja o nesreći pomoću GSM -a, GPS -a i akcelerometra: 5 koraka (sa slikama)
Sistem upozorenja o nesreći pomoću GSM -a, GPS -a i akcelerometra: Molimo vas da me glasate za takmičenjeMolim vas, glasajte za takmičenje. Danas mnogi ljudi poginu 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 spašavanje
Sistem upozorenja na hodnik: 4 koraka
Sistem upozorenja na hodnik: U školi postoje zvona koja ukazuju na to kada treba doći do promjene 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 učenik kasni, obično nema
Napravite sistem upozorenja za govorne / glasovne obavijesti: 4 koraka
Napravite sistem upozorenja za govorne / glasovne obavijesti: Ovaj projekat smo napravili za govorni / glasovni sistem obavještavanja i upozorenja. U ovom projektu mogu se koristiti najmanje dva senzora