Mundarija:

Uyquchanlik haqida ogohlantirish tizimi: 3 qadam
Uyquchanlik haqida ogohlantirish tizimi: 3 qadam

Video: Uyquchanlik haqida ogohlantirish tizimi: 3 qadam

Video: Uyquchanlik haqida ogohlantirish tizimi: 3 qadam
Video: The best 10 cars for under than 20000 $ 2024, Iyul
Anonim
Uyqusizlik haqida ogohlantirish tizimi
Uyqusizlik haqida ogohlantirish tizimi

Har yili dunyoning ko'plab mamlakatlarida halokatli yo'l -transport hodisalari tufayli ko'p odamlar hayotdan ko'z yumishadi va uyqusirab haydash yo'l -transport hodisalari va o'limining asosiy sabablaridan biridir. Haydash boshqaruvidagi charchoq va uyqu ko'pincha jiddiy baxtsiz hodisalarning asosiy sababidir. Biroq, charchoqning dastlabki belgilari o'ta muhim vaziyat paydo bo'lishidan oldin aniqlanishi mumkin, shuning uchun haydovchining charchashini aniqlash va uning belgisi tadqiqot mavzusi. Uyqusizlikni aniqlashning an'anaviy usullarining aksariyati xatti -harakatlarga asoslangan, ba'zilari esa haydovchilarni chalg'itishi mumkin, ba'zilari esa qimmat datchiklarni talab qiladi. Shuning uchun, ushbu maqolada, engil, real vaqtda haydovchining uyquchanligini aniqlash tizimi ishlab chiqilgan va Android ilovasida joriy qilingan. Tizim videoni yozib oladi va har bir kadrda tasvirni qayta ishlash texnikasi yordamida haydovchining yuzini aniqlaydi. Tizim haydovchining uyquchanligini moslashish chegarasi asosida aniqlash uchun yuz nishonlarini aniqlay oladi, ko'zning aspekt nisbati (EAR) va ko'zni yopish nisbati (ECR) ni hisoblab chiqadi. Taklif etilgan usulning samaradorligini tekshirish uchun mashinani o'rganish algoritmlari ishlatilgan. Ampirik natijalar shuni ko'rsatadiki, tavsiya etilgan model tasodifiy o'rmon tasniflagichi yordamida 84% aniqlikka erisha oladi.

1 -qadam: Sizga kerak bo'lgan narsalar

1. RASPBERRY PI

2. WEBCAM (yaxshi natijalar uchun C270 HD WEB CAM)

Kompyuter versiyasiga kodni o'zgartirish kerak bo'lishi mumkin

2 -qadam: Python kodi, ko'zlar shaklini bashorat qiluvchi ma'lumotlar to'plami (kompyuter versiyasi)

real vaqtda videoda ko'zlarni samarali aniqlash uchun biz ushbu.dat faylidan foydalanishimiz mumkin.

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

Yuqoridagi havoladan.dat faylini yuklab oling va pastdagi python kodini ishga tushiring

Python kodi

skipy.fazoviy import masofasidan imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (ko'z):

A = masofa.evklid (ko'z [1], ko'z [5]) B = masofa.evklid (ko'z [2], ko'z [4]) C = masofa evklid (ko'z [0], ko'z [3]) quloq = (A + B) / (2.0 * C) qaytish qulog'i bosimi = 0.25 frame_check = 20 aniqlash = dlib.get_frontal_face_detector () prognoz = dlib.shape_predictor (". / Shakl_predictor_68_face_landmarks.dat")# Dat fayli kodning asosiy nuqtasidir

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["chap_ko'z"]

(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) kulrang = cv2.cvtColor (ramka, cv2. COLOR_BGR2GRAY) sub'ektlari = sub'ektlar uchun ob'ektni aniqlash (kulrang, 0): shakl = prognoz (kulrang, mavzu) shakli = yuz_utils.shape_to_np (shakl)#NumPy qatoriga aylantirish chapEye = shakl [lStart: lEnd] rightEye = shakli [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) o'ngEAR = eye_aspect_ratio (rightEye) quloq = (chapEAR + o'ngEAR) / 2.0 chapEyeHull = cv2.convexHull (chapEye) o'ngEyeHye = cv2.convex drawContours (ramka, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ramka, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (ramka, "**************** OGOHLANTIRISH! *********** ***** ", (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 ()

3 -qadam: Raspberry Pi versiyasi

Raspberry Pi versiyasi
Raspberry Pi versiyasi
Raspberry Pi versiyasi
Raspberry Pi versiyasi

odamlar ko'zlarini yumganda, malina pi sizga ogohlantirish beradi

23 -gachasi pinhonaga signalni ulang (rasmga qarang)

skipy.fazoviy import masofasidan

RPi. GPIO -ni GPIO sifatida import qilish

vaqtdan boshlab uyqu

GPIO.setwarnings (noto'g'ri)

GPIO.setmode (GPIO. BCM)

imutils dan import face_utils

import imutils import dlib import cv2

ovozli signal = 23

GPIO. sozlash (buzzer, GPIO. OUT)

def eye_aspect_ratio (ko'z):

A = masofa.evklid (ko'z [1], ko'z [5]) B = masofa.evklid (ko'z [2], ko'z [4]) C = masofa evklid (ko'z [0], ko'z [3]) quloq = (A + B) / (2.0 * C) qaytish qulog'i bosimi = 0.25 frame_check = 20 aniqlash = dlib.get_frontal_face_detector () prognoz = dlib.shape_predictor (". / Shakl_predictor_68_face_landmarks.dat")# Dat fayli kodning asosiy nuqtasidir

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["chap_ko'z"]

(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) kulrang = cv2.cvtColor (ramka, cv2. COLOR_BGR2GRAY) sub'ektlari = sub'ektlar uchun mavzu uchun aniqlash (kulrang, 0): shakl = prognoz (kulrang, mavzu) shakli = yuz_utils.shape_to_np (shakl)#NumPy qatoriga aylantirish chapEye = shakl [lStart: lEnd] rightEye = shakli [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) quloq = (chapEAR + o'ngEAR) / 2.0 chapEyeHull = cv2.convexHull (chapEye) o'ngEyeHye = cv2.convex drawContours (ramka, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ramka, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (ramka, "**************** OGOHLANTIRISH! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.output (signal, GPIO. HIGH)

boshqa: bayroq = 0

GPIO.output (signal, GPIO. LOW)

cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()

Tavsiya: