Orodha ya maudhui:

Mfumo wa Tahadhari ya Kusinzia: Hatua 3
Mfumo wa Tahadhari ya Kusinzia: Hatua 3

Video: Mfumo wa Tahadhari ya Kusinzia: Hatua 3

Video: Mfumo wa Tahadhari ya Kusinzia: Hatua 3
Video: UKIONA DALILI HIZI 9 WIKI 2 BAADA YA KUJAMIIANA KAPIME UKIMWI HARAKA HUENDA UMEAMBUKIZWA 2024, Novemba
Anonim
Mfumo wa Tahadhari ya Kusinzia
Mfumo wa Tahadhari ya Kusinzia

Kila mwaka watu wengi wanapoteza maisha yao kutokana na ajali mbaya za barabarani kote ulimwenguni na kusinzia ni moja ya sababu kuu za ajali za barabarani na vifo. Uchovu na usingizi mdogo kwenye udhibiti wa kuendesha gari mara nyingi huwa sababu kuu ya ajali mbaya. Walakini, ishara za mwanzo za uchovu zinaweza kugunduliwa kabla ya hali mbaya kutokea na kwa hivyo, kugundua uchovu wa dereva na dalili yake ni mada inayoendelea ya utafiti. Njia nyingi za jadi za kugundua kusinzia zinategemea hali ya tabia wakati zingine zinaingiliana na zinaweza kuvuruga madereva, wakati zingine zinahitaji sensorer za gharama kubwa. Kwa hivyo, katika jarida hili, mfumo wa kugundua kusinzia kwa dereva wa uzani mwepesi unatengenezwa na kutekelezwa kwenye programu ya Android. Mfumo hurekodi video na hugundua uso wa dereva katika kila fremu kwa kutumia mbinu za usindikaji picha. Mfumo huu unauwezo wa kugundua alama za usoni, huhesabu Uwiano wa Macho ya Jicho (EAR) na Uwiano wa Kufunga Macho (ECR) kugundua usingizi wa dereva kwa msingi wa kizingiti kinachoweza kubadilika. Algorithms za ujifunzaji wa mashine zimeajiriwa kujaribu ufanisi wa njia inayopendekezwa. Matokeo ya kijeshi yanaonyesha kuwa mtindo uliopendekezwa una uwezo wa kufikia usahihi wa 84% kwa kutumia upatanishi wa msitu bila mpangilio.

Hatua ya 1: Vitu Unavyohitaji

1. RASPBERRY PI

2. WEBCAM (C270 HD WAM CAM KWA MATOKEO BORA)

Toleo la PC linaweza kuhitaji mabadiliko kadhaa kwenye nambari

Hatua ya 2: Nambari ya chatu iliyo na Sura ya Mtabiri wa Macho (Toleo la PC)

kugundua macho kwa ufanisi katika video ya wakati halisi, tunaweza kutumia faili ya sbelow.dat.

drive.google.com/open?id=1UiSHe72L4TeN14VK…

Pakua faili ya.dat kutoka kwa kiungo hapo juu na uendeshe nambari ya chini ya chatu

Nambari ya chatu

kutoka kwa scipy.spatial kuagiza umbali kutoka imutils kuagiza uso_utils kuagiza imutils kuagiza dlib kuagiza cv2

def eye_aspect_ratio (jicho):

A = umbali.euclidean (jicho [1], jicho [5]) B = umbali.euclidean (jicho [2], jicho [4]) C = umbali.euclidean (jicho [0], jicho [3]) sikio = (A + B) / (2.0 * C) pindua sikio = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () fore = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat file ndio kiini cha nambari

(lStart, lEnd) = uso_utils. FACIAL_ kushindaS_68_IDXS ["left_eye"]

[rStart, rEnd] = uso_utils. = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) masomo = gundua (kijivu, 0) kwa somo katika masomo: sura = kutabiri (kijivu, mada) sura = uso_utils.shape_to_np (umbo) #kugeuza kwa safu ya NumPy leftEye = sura [lStart: lEnd] kuliaEye = umbo [rStart: rEnd] kushotoEAR = eye_aspect_ratio (leftEye) kuliaEAR = eye_aspect_ratio (kuliaEye) sikio = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) kuliaEyeHull = cv2.convexH = cv2.convex choraContours (fremu, [kushotoEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (fremu, [kuliaEyeHull], -1, (0, 255, 0), 1) ikiwa sikio = fremu_chagua: cv2 Nakala ya Kuandika (fremu, "**************** Tahadhari! FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (fremu, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") mwingine: bendera = 0 cv2.imshow (" Fremu ", fremu) ufunguo = cv2.waitKey (1) & 0xFF ikiwa ufunguo == ord (" q "): piga cv2.destroyAllWindows () cap.stop ()

Hatua ya 3: Toleo la Raspberry Pi

Toleo la Raspberry Pi
Toleo la Raspberry Pi
Toleo la Raspberry Pi
Toleo la Raspberry Pi

watu wanapofumba macho yake basi pi rasipberry itakupa arifu

Unganisha buzzer yako kubandika 23 (tazama picha)

kutoka umbali wa kuagiza scipy.spatial

kuagiza RPi. GPIO kama GPIO

kutoka wakati kuagiza kuagiza

Maonyo ya GPIO (Uongo)

GPIO.setmode (GPIO. BCM)

kutoka kwa imutils kuagiza uso_utils

kuagiza imutils kuagiza dlib kuagiza cv2

buzzer = 23

Kuanzisha kwa GPIO (buzzer, GPIO. OUT)

def eye_aspect_ratio (jicho):

A = umbali.euclidean (jicho [1], jicho [5]) B = umbali.euclidean (jicho [2], jicho [4]) C = umbali.euclidean (jicho [0], jicho [3]) sikio = (A + B) / (2.0 * C) pindua sikio = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () fore = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Dat file ndio kiini cha nambari

(lStart, lEnd) = uso_utils. FACIAL_ kushindaS_68_IDXS ["left_eye"]

[rStart, rEnd] = uso_utils. = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) masomo = gundua (kijivu, 0) kwa somo katika masomo: sura = kutabiri (kijivu, mada) sura = uso_utils.shape_to_np (umbo) #kugeuza Mpangilio wa NumPy leftEye = sura [lStart: lEnd] kuliaEye = umbo [rStart: rEnd] kushotoEAR = eye_aspect_ratio (leftEye) kuliaEAR = eye_aspect_ratio (kuliaEye) sikio = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) kuliaEyeHull = cv2.convexH = cv2.convex choraContours (fremu, [kushotoEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (fremu, [kuliaEyeHull], -1, (0, 255, 0), 1) ikiwa sikio = fremu_chagua: cv2 Nakala ya Kuandika (fremu, "**************** ALERT! FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (fremu, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

Pato la GPIO (buzzer, GPIO. HIGH)

kingine: bendera = 0

Pato la GPIO (buzzer, GPIO. LOW)

cv2.

Ilipendekeza: