Բովանդակություն:
- Քայլ 1: Ձեզ անհրաժեշտ բաներ
- Քայլ 2. Python Code With Eyes Shape Predictor Dataset (PC տարբերակ)
- Քայլ 3: Raspberry Pi Version
Video: Քնկոտության ահազանգման համակարգ `3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ամեն տարի բազմաթիվ մարդիկ մահանում են մահացու ճանապարհատրանսպորտային պատահարների պատճառով ամբողջ աշխարհում, և քնկոտ մեքենա վարելը ճանապարհատրանսպորտային պատահարների և մահերի հիմնական պատճառներից մեկն է: Հոգնածությունը և միկրո քունը մեքենայի ղեկին հաճախ լուրջ վթարների հիմնական պատճառն են: Այնուամենայնիվ, հոգնածության նախնական նշանները կարող են հայտնաբերվել նախքան կրիտիկական իրավիճակի առաջացումը, և, հետևաբար, վարորդի հոգնածության հայտնաբերումը և դրա նշումը շարունակական հետազոտական թեմա է: Քնկոտություն հայտնաբերելու ավանդական մեթոդներից շատերը հիմնված են վարքագծի վրա, իսկ ոմանք աներես են և կարող են շեղել վարորդներին, իսկ ոմանք պահանջում են թանկարժեք տվիչներ: Հետևաբար, այս հոդվածում վարորդի քնկոտության հայտնաբերման թեթև, իրական ժամանակի համակարգը մշակվել և ներդրվել է Android հավելվածի վրա: Համակարգը գրանցում է տեսանյութերը և յուրաքանչյուր շրջանակում հայտնաբերում վարորդի դեմքը ՝ օգտագործելով պատկերի մշակման տեխնիկա: Համակարգն ունակ է հայտնաբերել դեմքի ուղենիշները, հաշվարկում է Eye Aspect Ratio (EAR) և Eye Closure Ratio (ECR) ՝ վարորդի քնկոտությունը հայտնաբերելու համար `հիմնված հարմարվողական շեմի վրա: Մեքենայական ուսուցման ալգորիթմներ են կիրառվել `առաջարկվող մոտեցման արդյունավետությունը ստուգելու համար: Էմպիրիկ արդյունքները ցույց են տալիս, որ առաջարկվող մոդելը կարող է 84% ճշգրտության հասնել անտառի պատահական դասակարգչի միջոցով:
Քայլ 1: Ձեզ անհրաժեշտ բաներ
1. ASԵASՈՐԻ ՊԻ
2. WEBCAM (C270 HD WEB CAM ավելի լավ արդյունքների համար)
Հնարավոր է, որ համակարգչային տարբերակում անհրաժեշտ լինեն որոշ փոփոխություններ ծածկագրում
Քայլ 2. Python Code With Eyes Shape Predictor Dataset (PC տարբերակ)
իրական ժամանակում տեսանյութում աչքերը շատ ավելի արդյունավետորեն հայտնաբերելու համար մենք կարող ենք օգտագործել այս ստորև ներկայացված.dat ֆայլը:
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Ներբեռնեք.dat ֆայլը վերևի հղումից և գործարկեք ստորև տեղադրված Python ծածկագիրը
Python կոդ
scipy.spatial ներմուծման հեռավորություն imutils ներմուծումից face_utils ներմուծում imutils ներմուծում dlib ներմուծում cv2
def eye_aspect_ratio (աչք):
A = հեռավորություն. Էվկլիդյան (աչք [1], աչք [5]) B = հեռավորություն. Էվկլիդյան (աչք [2], աչք [4]) C = հեռավորություն. Էվկլիդյան (աչք [0], աչք [3]) ականջ = (A + B) / (2.0 * C) վերադարձ ականջի շեմ = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Տվյալների ֆայլը կոդի առանցքն է
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) gray = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2GRAY) առարկաներ = հայտնաբերել (մոխրագույն, 0) առարկայի համար առարկա.: lEnd] rightEye = ձև [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ականջ = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (շրջանակ, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (շրջանակ, [rightEyeHull], -1, (0, 255, 0), 1) եթե ականջը = frame_check: cv2.putText (շրջանակ, "*************************************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (շրջանակ, «**************** ՀԱՇՎԵԼ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #տպագիր (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()
Քայլ 3: Raspberry Pi Version
երբ անձինք փակում են նրա աչքերը, ապա ազնվամորու pi- ն ձեզ ահազանգ կտա
ՄԻԱԵՔ ձեր ազդանշանը 23 կապին (տես նկարը)
scipy.spatial ներմուծման հեռավորությունից
ներմուծեք RPi. GPIO- ն որպես GPIO
ժամանակից ներմուծել քուն
GPIO.setwarnings (Կեղծ)
GPIO.setmode (GPIO. BCM)
imutils- ից ներմուծել face_utils
ներմուծել imutils ներմուծել dlib ներմուծել cv2
բզզոց = 23
GPIO.setup (ազդանշան, GPIO. OUT)
def eye_aspect_ratio (աչք):
A = հեռավորություն. Էվկլիդյան (աչք [1], աչք [5]) B = հեռավորություն. Էվկլիդյան (աչք [2], աչք [4]) C = հեռավորություն. Էվկլիդյան (աչք [0], աչք [3]) ականջ = (A + B) / (2.0 * C) վերադարձ ականջի շեմ = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Տվյալների ֆայլը կոդի առանցքն է
(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) gray = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2GRAY) առարկաներ = հայտնաբերել (մոխրագույն, 0) առարկայի համար առարկա.: lEnd] rightEye = shape [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 (շրջանակ, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (շրջանակ, [rightEyeHull], -1, (0, 255, 0), 1) եթե ականջը = frame_check: cv2.putText (շրջանակ, "*************************************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (շրջանակ, «**************** ՀԱՇՎԵԼ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #տպագիր (" Dro իմաստուն »)
GPIO.output (ազդանշան, GPIO. HIGH)
այլ ՝ դրոշ = 0
GPIO.output (ազդանշան, GPIO. LOW)
cv2.imshow («Շրջանակ», շրջանակ) բանալին = cv2.waitKey (1) & 0xFF if key == ord ("q"): ընդմիջում cv2.destroyAllWindows () cap.stop ()
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
GSM, GPS և արագացուցիչի օգտագործմամբ վթարային ահազանգման համակարգ. 5 քայլ (նկարներով)
GSM- ի, GPS- ի և արագացուցիչի օգտագործմամբ դժբախտ պատահարների ահազանգման համակարգ. Խնդրում եմ քվեարկեք ինձ մրցույթի համար Խնդրում եմ քվեարկեք մրցույթի համար Մեր օրերում դժբախտ պատահարի հետևանքով շատ մարդիկ են զոհվում ճանապարհին, որի հիմնական պատճառը «փրկարարական աշխատանքների հետաձգումն է»: Այս խնդիրը շատ մեծ է զարգացող երկրներում, այնպես որ ես նախագծեցի այս նախագիծը ՝ փրկելու համար
Ինչպես կատարել ջրհեղեղի հայտնաբերման խելացի ահազանգման համակարգ ՝ օգտագործելով Raspberry Pi և Particle Argon: 6 քայլ
Ինչպես կատարել ջրհեղեղի հայտնաբերման ազդանշանային համակարգ Raspberry Pi- ի և Particle Argon- ի միջոցով. Floodրհեղեղի ստանդարտ սենսորներ ունենալը հիանալի է կանխելու ձեր տան կամ աշխատավայրի զանգվածային վնասները: Բայց դա դժվար է դարձնում, եթե տանը չեք գտնվում ՝ ահազանգին ներկա լինելու համար: Իհարկե Դուք կարող եք գնել դրանք
Arduino Home ահազանգման համակարգ `4 քայլ
Arduino Home Alarm System: Սա հիանալի Arduino նախագիծ է, որը կարող եք սկսել Arduino- ի հիմնական բաղադրիչներից: Այս նախագիծը կգործի որպես ահազանգման համակարգ ՝ որպես անհատի ահազանգ, եթե ինչ -որ մեկը ներխուժել է ընտրության որոշակի տարածք: Հիանալի է, եթե մտադիր եք սկսել նախագիծ, որը
Drուր խմելու ահազանգման համակարգ /ջրի ընդունման մոնիտոր `6 քայլ
Drուր խմելու ահազանգման համակարգ /akeրի ընդունման մոնիտոր. Մենք պետք է ամեն օր բավարար քանակությամբ ջուր խմենք, որպեսզի ինքներս առողջ լինենք: Բացի այդ, կան շատ հիվանդներ, որոնց նշանակվում է օրական որոշակի քանակությամբ ջուր խմել: Բայց, ցավոք, մենք գրեթե ամեն օր բաց թողեցինք ժամանակացույցը: Այսպիսով, ես նախագծում եմ