فهرست مطالب:

سیستم هشدار خواب آلودگی: 3 مرحله
سیستم هشدار خواب آلودگی: 3 مرحله

تصویری: سیستم هشدار خواب آلودگی: 3 مرحله

تصویری: سیستم هشدار خواب آلودگی: 3 مرحله
تصویری: لزبازی لیلا اوتادی چه لبی میگیره (نبینی از دستت رفته) 2024, جولای
Anonim
سیستم هشدار خواب آلودگی
سیستم هشدار خواب آلودگی

سالانه افراد زیادی بر اثر تصادفات جاده ای مرگبار در سراسر جهان جان خود را از دست می دهند و خواب آلودگی یکی از عوامل اصلی تصادفات جاده ای و مرگ و میر است. خستگی و خواب کم هنگام کنترل رانندگی اغلب علت اصلی تصادفات جدی است. با این حال ، علائم اولیه خستگی را می توان قبل از بروز یک موقعیت بحرانی تشخیص داد و بنابراین ، تشخیص خستگی راننده و نشان دادن آن موضوع تحقیق مداوم است. اکثر روشهای سنتی برای تشخیص خواب آلودگی بر جنبه های رفتاری استوار است در حالی که برخی مزاحم هستند و ممکن است حواس رانندگان را پرت کنند ، در حالی که برخی دیگر به سنسورهای گران قیمت نیاز دارند. بنابراین ، در این مقاله ، یک سیستم تشخیص خواب آلودگی سبک وزن و زمان واقعی راننده توسعه یافته و بر روی برنامه Android اجرا شده است. این سیستم فیلم ها را ضبط می کند و با استفاده از تکنیک های پردازش تصویر ، چهره راننده را در هر فریم تشخیص می دهد. این سیستم قادر است نقاط برجسته صورت را تشخیص دهد ، نسبت ابعاد چشم (EAR) و نسبت بستن چشم (ECR) را برای تشخیص خواب آلودگی راننده بر اساس آستانه تطبیقی محاسبه می کند. از الگوریتم های یادگیری ماشین برای آزمایش اثربخشی روش پیشنهادی استفاده شده است. نتایج تجربی نشان می دهد که مدل پیشنهادی قادر است با استفاده از طبقه بندی کننده جنگل تصادفی به دقت 84 درصد برسد.

مرحله 1: موارد مورد نیاز

1. PI رزبری

2. WEBCAM (C270 HD WEB CAM برای نتایج بهتر)

نسخه رایانه ممکن است نیاز به تغییراتی در کد داشته باشد

مرحله 2: کد پایتون با مجموعه داده های پیش بینی شکل چشم (نسخه رایانه شخصی)

برای تشخیص چشمها به طور مtثر در یک ویدیو زمان واقعی ، می توانیم از این فایل.dat زیر استفاده کنیم.

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

فایل.dat را از لینک بالا بارگیری کرده و کد پایتون زیر را اجرا کنید

کد پایتون

از scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (چشم):

A = فاصله. اقلیدسی (چشم [1] ، چشم [5]) B = فاصله. اقلیدسی (چشم [2] ، چشم [4]) C = فاصله. اقلیدسی (چشم [0] ، چشم [3]) گوش = (A + B) / (2.0 * C) thresh ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / shape_predictor_68_face_landmarks.dat")# فایل Dat محور اصلی کد است

(lStart ، lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["چپ_چشم"]

(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 (قاب ، عرض = 450) خاکستری = cv2.cvtColor (قاب ، cv2. COLOR_BGR2GRAY) موضوعات = تشخیص (خاکستری ، 0) برای موضوع در موضوعات: شکل = پیش بینی (خاکستری ، موضوع) شکل = face_utils.shape_to_np (شکل)#تبدیل به NumPy Array leftEye = shape [lStart: 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 (قاب ، "**************** ALERT! ****************" ، (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

نسخه رزبری پای
نسخه رزبری پای
نسخه رزبری پای
نسخه رزبری پای

وقتی افراد چشمان خود را می بندند ، تمشک پی به شما هشدار می دهد

زنگ را به پین 23 وصل کنید (تصویر را ببینید)

از فاصله واردات scipy.spatial

RPi. GPIO را به عنوان GPIO وارد کنید

از زمان وارد کردن خواب

GPIO.setwarnings (False)

GPIO.setmode (GPIO. BCM)

از imutils face_utils را وارد کنید

import imutils import dlib import cv2

زنگ = 23

GPIO.setup (زنگ ، GPIO. OUT)

def eye_aspect_ratio (چشم):

A = فاصله. اقلیدسی (چشم [1] ، چشم [5]) B = فاصله. اقلیدسی (چشم [2] ، چشم [4]) C = فاصله. اقلیدسی (چشم [0] ، چشم [3]) گوش = (A + B) / (2.0 * C) thresh ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / shape_predictor_68_face_landmarks.dat")# فایل Dat محور اصلی کد است

(lStart ، lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["چپ_چشم"]

(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 (قاب ، عرض = 450) خاکستری = cv2.cvtColor (قاب ، cv2. COLOR_BGR2GRAY) موضوعات = تشخیص (خاکستری ، 0) برای موضوع در موضوعات: شکل = پیش بینی (خاکستری ، موضوع) شکل = face_utils.shape_to_np (شکل)#تبدیل به NumPy Array leftEye = shape [lStart: 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 (قاب ، "**************** ALERT! ****************" ، (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)

else: flag = 0

GPIO.output (زنگ ، GPIO. LOW)

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

توصیه شده: