Агуулгын хүснэгт:

Нойрмоглох дохиоллын систем: 3 алхам
Нойрмоглох дохиоллын систем: 3 алхам

Видео: Нойрмоглох дохиоллын систем: 3 алхам

Видео: Нойрмоглох дохиоллын систем: 3 алхам
Видео: БЕСПРОВОДНОЕ ВИДЕОНАБЛЮДЕНИЕ WIFI комплект KERUI со слежением за людьми 2024, Долдугаар сарын
Anonim
Нойрмоглох дохиоллын систем
Нойрмоглох дохиоллын систем

Жил бүр дэлхий даяар зам тээврийн ослоос болж олон хүн амь насаа алдаж, нойрмог жолоо барих нь зам тээврийн осол, эндэгдлийн гол шалтгаануудын нэг болдог. Жолоодлогын удирдлага дээр ядрах, бичил унтах нь ихэвчлэн ноцтой ослын үндэс болдог. Гэсэн хэдий ч ядаргааны анхны шинж тэмдгийг ноцтой нөхцөл байдал үүсэхээс өмнө илрүүлж болох тул жолоочийн ядаргаа, илрэлийг илрүүлэх нь судалгааны сэдэв хэвээр байна. Нойрмог байдлыг илрүүлэх уламжлалт аргуудын ихэнх нь зан үйлийн шинж чанарт суурилдаг бол зарим нь хөндлөнгөөс оролцдог бөгөөд жолоочийн анхаарлыг сарниулдаг бол зарим нь үнэтэй мэдрэгч шаарддаг. Тиймээс энэхүү баримт бичигт хөнгөн жинтэй, бодит цагийн жолоочийн нойрмог байдлыг илрүүлэх системийг боловсруулж, Андройд аппликейшн дээр ашигласан болно. Систем нь дүрс бичлэг хийх техникийг ашиглан видеог бүртгэж, жолоочийн царайг хүрээ бүрт илрүүлдэг. Энэхүү систем нь дасан зохицох босго дээр суурилсан жолоочийн нойрмог байдлыг илрүүлэхийн тулд нүүрний тэмдэглэгээг илрүүлэх, нүдний харааны харьцаа (EAR) ба нүд хаах харьцаа (ECR) -ийг тооцоолох чадвартай. Санал болгож буй аргын үр дүнг шалгахын тулд машин сургалтын алгоритмыг ашигласан болно. Эмпирик үр дүнгээс үзэхэд санал болгож буй загвар нь санамсаргүй ойн ангилагч ашиглан 84% -ийн нарийвчлалыг олж авах боломжтой юм.

Алхам 1: Танд хэрэгтэй зүйл

1. Raspberberry PI

2. WEBCAM (C270 HD WEB CAM нь илүү сайн үр дүнд хүрдэг)

Компьютерийн хувилбарт кодонд зарим өөрчлөлт оруулах шаардлагатай байж магадгүй юм

Алхам 2: Нүдний хэлбэр дүрслэгч Python кодын өгөгдлийн багц (PC хувилбар)

Нүдийг бодит цаг хугацаанд үр дүнтэй илрүүлэхийн тулд бид энэхүү.dat файлыг ашиглаж болно.

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

Дээрх линкээс.dat файлыг татаж аваад доорх python кодыг ажиллуулна уу

Python код

scipy. орон зайн импортын зайнаас

def eye_aspect_ratio (нүд):

A = зай.евклид (нүд [1], нүд [5]) B = зай.евклид (нүд [2], нүд [4]) C = зай.евклид (нүд [0], нүд [3]) чих = (A + B) / (2.0 * C) буцах чих хадах = 0.25 frame_check = 20 илрүүлэх = dlib.get_frontal_face_detector () урьдчилсан = dlib.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 байхад True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) саарал = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) субьектууд = сэдвүүдийн хувьд сэдвийг илрүүлэх (саарал, 0): хэлбэр = урьдчилан таамаглах (саарал, сэдэв) хэлбэр = нүүр_утилс.шапан_нп (хэлбэр)#NumPy массив руу хөрвүүлэх зүүн нүд = хэлбэр [lStart: lEnd] rightEye = хэлбэр [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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 ") өөр: туг = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Алхам 3: Raspberry Pi хувилбар

Raspberry Pi хувилбар
Raspberry Pi хувилбар
Raspberry Pi хувилбар
Raspberry Pi хувилбар

хүмүүс нүдээ анихад бөөрөлзгөнө пи танд сэрэмжлүүлэг өгөх болно

23 дугаар зүү рүү дуугарагчаа холбоно уу (зургийг үзнэ үү)

орон зайн импортын зайнаас

RPi. GPIO -г GPIO болгон импортлох

цагаас эхлэн унтах

GPIO.setwarnings (Худал)

GPIO.setmode (GPIO. BCM)

from imutils import face_utils

импорт имутил импорт dlib импорт cv2

дуугарагч = 23

GPIO. тохиргоо (дуугаралт, 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 илрүүлэх = dlib.get_frontal_face_detector () урьдчилсан = dlib.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 байхад True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) саарал = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) субьектууд = сэдвүүдийн хувьд сэдвийг илрүүлэх (саарал, 0): хэлбэр = урьдчилан таамаглах (саарал, сэдэв) хэлбэр = нүүр_утилс.шапан_нп (хэлбэр)#NumPy массив руу хөрвүүлэх зүүн нүд = хэлбэр [lStart: lEnd] rightEye = хэлбэр [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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. гаралт (дуугаралт, GPIO. HIGH)

өөр: туг = 0

GPIO.output (дуугаралт, GPIO. LOW)

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

Зөвлөмж болгож буй: