
Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10

Çdo vit shumë njerëz humbasin jetën për shkak të aksidenteve fatale rrugore në të gjithë botën dhe ngasja e përgjumur është një nga shkaqet kryesore të aksidenteve rrugore dhe vdekjeve. Lodhja dhe gjumi mikro në kontrollet e drejtimit janë shpesh shkaku kryesor i aksidenteve serioze. Sidoqoftë, shenjat fillestare të lodhjes mund të zbulohen para se të krijohet një situatë kritike dhe për këtë arsye, zbulimi i lodhjes së shoferit dhe tregimi i tij është temë kërkimore e vazhdueshme. Shumica e metodave tradicionale për të zbuluar përgjumjen bazohen në aspekte të sjelljes, ndërsa disa janë ndërhyrës dhe mund të shpërqendrojnë drejtuesit, ndërsa disa kërkojnë sensorë të shtrenjtë. Prandaj, në këtë punim, një sistem i lehtë për zbulimin e përgjumjes së shoferit në kohë reale është zhvilluar dhe zbatuar në aplikacionin Android. Sistemi regjistron videot dhe zbulon fytyrën e shoferit në çdo kornizë duke përdorur teknika të përpunimit të imazhit. Sistemi është i aftë të zbulojë pikat referuese të fytyrës, llogarit raportin e aspektit të syrit (EAR) dhe raportin e mbylljes së syve (ECR) për të zbuluar përgjumjen e shoferit bazuar në pragun adaptues. Algoritmet e mësimit të makinerisë janë përdorur për të testuar efikasitetin e qasjes së propozuar. Rezultatet empirike demonstrojnë se modeli i propozuar është në gjendje të arrijë saktësinë prej 84% duke përdorur klasifikuesin pyjor të rastit.
Hapi 1: Gjërat që ju nevojiten
1. MJEDRS PI
2. WEBCAM (C270 HD WEB CAM P FORR REZULTATET MET T MIRA)
Versioni i kompjuterit mund të ketë nevojë për disa ndryshime në kod
Hapi 2: Kodi Python Me Sytë Shape Predictor Dataset (Version PC)
për të zbuluar sytë në mënyrë shumë efektive në një video në kohë reale, ne mund ta përdorim këtë skedar.dat më poshtë.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Shkarkoni skedarin.dat nga lidhja e mësipërme dhe drejtoni kodin python më poshtë
Kodi Python
nga scipy. distanca e importit hapësinor nga imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (sy):
A = distanca.euklidiane (sy [1], sy [5]) B = distancë.euklidiane (sy [2], sy [4]) C = distancë.euclidean (sy [0], sy [3]) vesh = (A + B) / (2.0 * C) pragu i veshit të kthimit = 0.25 frame_check = 20 dete = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Skedari i të dhënave është thelbi i kodit
(lStart, fund) = 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) gri = cv2.cvtColor (kornizë, cv2. COLOR_BGR2GRAY) subjekte = zbulo (gri, 0) për subjektin në lëndë: formë = parashiko (gri, subjekt) formë = face_utils.shape_to_np (formë)#konvertim në NumPy Array leftEye = formë [lStart: lEnd] rightEye = formë [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) vesh = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (kornizë, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) nëse veshi = frame_check: cv2.putText (kuadër, "*************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (kuadër, "*************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") tjetër: flamur = 0 cv2.imshow (" Frame ", frame) kyç = cv2.waitKey (1) & 0xFF nëse kyçi == ord (" q "): thyen cv2.destroyAllWindows () cap.stop ()
Hapi 3: Versioni i mjedrës Pi


kur personat mbyllin sytë e tij/saj, atëherë mjedra pi do t'ju japë alarmin
LIDHni zilen tuaj në pin 23 (shihni foton)
nga scipy.distanca e importit hapësinor
importoni RPi. GPIO si GPIO
nga koha import gjumi
GPIO.setwarnings (False)
GPIO.setmode (GPIO. BCM)
nga imutils import face_utils
import imutils import dlib import cv2
zile = 23
GPIO.setup (zile, GPIO. OUT)
def eye_aspect_ratio (sy):
A = distanca.euklidiane (sy [1], sy [5]) B = distancë.euklidiane (sy [2], sy [4]) C = distancë.euclidean (sy [0], sy [3]) vesh = (A + B) / (2.0 * C) pragu i veshit të kthimit = 0.25 frame_check = 20 dete = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Skedari i të dhënave është thelbi i kodit
(lStart, fund) = 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) gri = cv2.cvtColor (kornizë, cv2. COLOR_BGR2GRAY) subjekte = zbulo (gri, 0) për subjektin në lëndë: formë = parashiko (gri, subjekt) formë = face_utils.shape_to_np (formë)#konvertim në NumPy Array leftEye = formë [lStart: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (kornizë, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) nëse veshi = frame_check: cv2.putText (kuadër, "*************** ALERT! ***************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (kuadër, "*************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro zemer ")
GPIO.putput (zile, GPIO. HIGHT)
tjetër: flamur = 0
GPIO.putput (zile, GPIO. LOW)
cv2.imshow ("Frame", frame) çelësi = cv2.waitKey (1) & 0xFF nëse çelësi == ord ("q"): thyeni cv2.destroyAllWindows () cap.stop ()
Recommended:
Sistemi i alarmit Mini PIR M5StickC-ESP32: 7 hapa

Sistemi i alarmit Mini PIR M5StickC-ESP32: Në këtë projekt do të mësojmë se si të bëjmë një paralajmërim mini alarmi duke përdorur një sensor mini PIR dhe një tabelë M5StickC ESP32. Shikoni videon
Sistemi i alarmit për zbulimin e gazit Arduino: 6 hapa

Sistemi i alarmit të zbulimit të gazit Arduino: Përshëndetje, të gjithëve! Tani për tani, unë do të shpjegoj se si të ndërtoj një sistem alarmi për zbulimin e gazit Arduino në tinkercad. Ky qark përdor sensorin e gazit për të zbuluar nëse ka zjarr, tym ose rrjedhje gazi aty pranë. Duke përdorur LCD -në dhe alarmin, ky qark gjithashtu
Sistemi i alarmit për pirjen e ujit /Monitorimi i marrjes së ujit: 6 hapa

Sistemi i alarmit për pirjen e ujit /Monitorimi i marrjes së ujit: Duhet të pimë sasi të mjaftueshme të ujit çdo ditë për të mbajtur veten të shëndetshëm. Gjithashtu ka shumë pacientë që janë të përshkruar të pinë një sasi të caktuar uji çdo ditë. Por për fat të keq ne e humbëm orarin pothuajse çdo ditë. Kështu që unë dizajnoj
Sistemi i alarmit të zjarrit duke përdorur Arduino [Në disa hapa të thjeshtë]: 3 hapa
![Sistemi i alarmit të zjarrit duke përdorur Arduino [Në disa hapa të thjeshtë]: 3 hapa Sistemi i alarmit të zjarrit duke përdorur Arduino [Në disa hapa të thjeshtë]: 3 hapa](https://i.howwhatproduce.com/images/003/image-6841-j.webp)
Sistemi i alarmit të zjarrit duke përdorur Arduino [Në disa hapa të thjeshtë]: A po kërkoni të bëni një projekt të thjeshtë dhe interesant me Arduino i cili në të njëjtën kohë mund të jetë vërtet i dobishëm dhe potencialisht shpëtues i jetës? Nëse po, keni ardhur në vendin e duhur për të mësuar diçka të re dhe novatore. Në këtë postim po shkojmë
Sistemi i alarmit me rreze lazer me bateri të rimbushshme për lazer: 10 hapa

Sistemi i alarmit me rreze lazer me bateri të rimbushshme për lazer: Përshëndetje të gjithëve … Unë jam Revhead, dhe ky është udhëzimi im i parë kështu që ju lutem mos ngurroni të më jepni këshilla dhe të tregoni fushat në të cilat të përmirësohem. Frymëzimi për këtë projekt erdhi nga Kipkay i cili postoi një version të ngjashëm (Mbroni shtëpinë tuaj me LASE