Turinys:
- 1 žingsnis: reikalingi dalykai
- 2 veiksmas: „Python“kodas su akių formos numatytojo duomenų rinkiniu (kompiuterio versija)
- 3 žingsnis: „Raspberry Pi“versija
Video: Įspėjimo apie mieguistumą sistema: 3 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Kiekvienais metais daugelis žmonių miršta dėl mirtinų kelių eismo įvykių visame pasaulyje, o apsnūdęs vairavimas yra viena pagrindinių eismo įvykių ir mirčių priežasčių. Nuovargis ir mikro miegas prie vairavimo valdymo dažnai yra rimtų avarijų priežastis. Tačiau pradinius nuovargio požymius galima aptikti dar prieš susiklosčius kritinei situacijai, todėl vairuotojo nuovargio aptikimas ir jo nurodymas yra nuolatinė tyrimo tema. Dauguma tradicinių mieguistumo nustatymo metodų yra pagrįsti elgesio aspektais, o kai kurie yra įkyrūs ir gali atitraukti vairuotojų dėmesį, o kai kuriems reikia brangių jutiklių. Todėl šiame darbe sukurta ir įdiegta „Android“programoje lengva ir realiu laiku vairuojančio vairuotojo mieguistumo aptikimo sistema. Sistema įrašo vaizdo įrašus ir aptinka vairuotojo veidą kiekviename kadre, naudodama vaizdo apdorojimo būdus. Sistema gali aptikti veido orientyrus, apskaičiuoja akių aspektą (EAR) ir akių uždarymo koeficientą (ECR), kad nustatytų vairuotojo mieguistumą, pagrįstą prisitaikančiu slenksčiu. Siūlomo metodo veiksmingumui patikrinti buvo naudojami mašininio mokymosi algoritmai. Empiriniai rezultatai rodo, kad naudojant atsitiktinį miško klasifikatorių, siūlomas modelis gali pasiekti 84% tikslumą.
1 žingsnis: reikalingi dalykai
1. AVYNĖS PI
2. WEBCAM (C270 HD WEB CAM GERESNIAM REZULTATUI)
Kompiuterio versijai gali prireikti kai kurių kodo pakeitimų
2 veiksmas: „Python“kodas su akių formos numatytojo duomenų rinkiniu (kompiuterio versija)
norėdami daug efektyviau aptikti akis realaus laiko vaizdo įrašuose, galime naudoti šį sbelow.dat failą.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Atsisiųskite.dat failą iš aukščiau esančios nuorodos ir paleiskite žemiau esantį python kodą
„Python“kodas
iš „scipy.spatial“importo atstumo
def eye_aspect_ratio (akis):
A = atstumas. Euklidinis (akis [1], akis [5]) B = atstumas. Euklidinis (akis [2], akis [4]) C = atstumas. Euklidinis (akis [0], akis [3]) ausis = A + B)
(lPradėti, pasibaigti) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) vėliava = 0, o tiesa: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) pilka = cv2.cvtColor (kadras, cv2. COLOR_BGR2GRAY) objektai = aptinkamas (pilkas, 0) objekto subjektas: forma = nuspėjama (pilka, subjektas) forma = face_utils.shape_to_np (figūra) #converting to NumPy Array leftEye = forma [lStart: lEnd] rightEye = formos [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 (kadras, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (kadras, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (kadras, "**************** ALERT! ***************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") else: flag = 0 cv2.imshow (" Rėmas ", kadras) raktas = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()
3 žingsnis: „Raspberry Pi“versija
kai žmonės užsimerkia, aviečių pi duos jums įspėjimą
Prijunkite garsinį signalą prie kaiščio 23 (žr. Paveikslėlį)
nuo scipy.spatial importo atstumas
importuoti RPi. GPIO kaip GPIO
iš laiko importuoti miegą
GPIO.setwarnings (klaidinga)
GPIO.setmode (GPIO. BCM)
iš imutils importuoja face_utils
importuoti imutils importuoti dlib importuoti cv2
garsinis signalas = 23
GPIO.setup (garsinis signalas, GPIO. OUT)
def eye_aspect_ratio (akis):
A = atstumas. Euklidinis (akis [1], akis [5]) B = atstumas. Euklidinis (akis [2], akis [4]) C = atstumas. Euklidinis (akis [0], akis [3]) ausis = A + B)
(lPradėti, pasibaigti) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]
(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) vėliava = 0, o tiesa: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) pilka = cv2.cvtColor (rėmas, cv2. COLOR_BGR2GRAY) subjektai = aptinkamas (pilkas, 0) objekto subjektas: forma = nuspėjama (pilka, objektas) forma = face_utils.shape_to_np (figūra) #converting to NumPy Array leftEye = forma [lStart: lEnd] rightEye = formos [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 (kadras, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (kadras, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (kadras, "**************** ALERT! ***************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO išėjimas (garsinis signalas, GPIO. HIGH)
kitaip: vėliava = 0
GPIO išėjimas (garsinis signalas, GPIO. LOW)
cv2.imshow ("Rėmas", kadras) raktas = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Rekomenduojamas:
Įspėjimo apie avariją sistema naudojant GSM, GPS ir akselerometrą: 5 žingsniai (su nuotraukomis)
Įspėjimo apie nelaimingus atsitikimus sistema, naudojant GSM, GPS ir pagreičio matuoklį: Prašome balsuoti už konkursą. Balsuokite už konkursą. Šiais laikais daugelis žmonių žūsta kelyje dėl avarijos, o pagrindinė priežastis yra „vėlavimas gelbėti“. Ši problema yra labai didelė besivystančiose šalyse, todėl sukūriau šį projektą, norėdamas išsaugoti
Įspėjimo apie orą šviesos sistema: 6 žingsniai
Oro įspėjimo šviesos sistema: įspėjimo apie orą apšvietimo sistema keičia apšvietimą, kad būtų rodomi skirtingi įspėjimai apie orus ar laikrodžius. Ši sistema naudoja laisvai prieinamus orų duomenis, kad būtų pakeistas apšvietimas, rodantis oro būklę. Aviečių pi (per mazgą raudona) patikrina
Sukurkite įspėjimo apie kalbėjimą / balsu įspėjimo sistemą: 4 žingsniai
Sukurkite įspėjimo apie kalbėjimą / balsu įspėjimo sistemą: Šiame projekte mes sukūrėme pranešimo apie kalbą / įspėjimo sistemą. Šiame projekte galima naudoti mažiausiai du jutiklius
Įspėjimo apie mažai drėgną dirvą jūsų augalui sistema: 5 žingsniai
Įspėjimo apie žemo drėgnumo dirvožemį sistema jūsų augalui: keliose gyvenamosiose patalpose įprasta rasti stiklainius su įvairių rūšių augalais. Dėl daugybės kasdienių užsiėmimų žmonės pamiršta laistyti savo augalus ir miršta dėl vandens trūkumo. Siekdami išvengti šios problemos, mes nusprendžiame
„Makey Makey“- išankstinio įspėjimo apie stiprų vėją sistema: 5 žingsniai
„Makey Makey“- išankstinio įspėjimo apie stiprų vėją sistema: ši " išankstinio įspėjimo sistema " dizaino iššūkis būtų pateiktas studentų grupei. Tikslas yra tai, kad studentų komanda (po du ar tris grupėje) suprojektuotų sistemą, kuri įspėtų žmones ieškoti prieglobsčio nuo pavojingų vėjų