Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:14
Hàng năm, nhiều người mất mạng do tai nạn đường bộ gây tử vong trên khắp thế giới và lái xe buồn ngủ là một trong những nguyên nhân chính gây ra tai nạn đường bộ và tử vong. Sự mệt mỏi và tình trạng ngủ li bì khi điều khiển lái xe thường là nguyên nhân sâu xa của các vụ tai nạn nghiêm trọng. Tuy nhiên, các dấu hiệu ban đầu của sự mệt mỏi có thể được phát hiện trước khi tình huống nguy cấp phát sinh và do đó, việc phát hiện sự mệt mỏi của người lái xe và dấu hiệu của nó là chủ đề nghiên cứu đang được tiến hành. Hầu hết các phương pháp truyền thống để phát hiện buồn ngủ đều dựa trên các khía cạnh hành vi trong khi một số phương pháp xâm nhập và có thể khiến người lái mất tập trung, trong khi một số phương pháp yêu cầu cảm biến đắt tiền. Do đó, trong bài báo này, hệ thống phát hiện buồn ngủ của người lái xe theo thời gian thực, trọng lượng nhẹ được phát triển và triển khai trên ứng dụng Android. Hệ thống ghi lại các video và phát hiện khuôn mặt của người lái xe trong mọi khung hình bằng cách sử dụng các kỹ thuật xử lý hình ảnh. Hệ thống có khả năng phát hiện các điểm mốc trên khuôn mặt, tính toán Tỷ lệ khung hình của mắt (EAR) và Tỷ lệ nhắm mắt (ECR) để phát hiện tình trạng buồn ngủ của người lái xe dựa trên ngưỡng thích ứng. Các thuật toán học máy đã được sử dụng để kiểm tra tính hiệu quả của phương pháp được đề xuất. Kết quả thực nghiệm chứng minh rằng mô hình đề xuất có thể đạt được độ chính xác 84% khi sử dụng bộ phân loại rừng ngẫu nhiên.
Bước 1: Những thứ bạn cần
1. RASPBERRY PI
2. WEBCAM (WEB CAM C270 HD CHO KẾT QUẢ TỐT HƠN)
Phiên bản pc có thể cần một số thay đổi trong mã
Bước 2: Mã Python với Bộ dữ liệu dự đoán hình dạng mắt (Phiên bản PC)
để phát hiện mắt một cách hiệu quả trong video thời gian thực, chúng tôi có thể sử dụng tệp.dat sbelow này.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Tải xuống tệp.dat từ liên kết trên và chạy mã python bên dưới
Mã Python
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio (mắt):
A = distance.euclidean (eye [1], eye [5]) B = distance.euclid (eye [2], eye [4]) C = distance.euclidean (eye [0], eye [3]) ear = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 explore = dlib.get_frontal_face_detector () dự đoán = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Tệp dữ liệu là mấu chốt của mã
(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 trong khi True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) xám = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) subject = phát hiện (xám, 0) cho đối tượng trong các đối tượng: shape = dự đoán (xám, chủ đề) shape = face_utils.shape_to_np (shape) #converting to 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 (rightEyeHull) cv2. drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (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 ()
Bước 3: Phiên bản Raspberry Pi
Khi mọi người nhắm mắt lại thì quả mâm xôi pi sẽ đưa ra cảnh báo cho bạn
KẾT NỐI bộ rung của bạn với chân 23 (xem hình ảnh)
từ khoảng cách nhập scipy.spatial
nhập RPi. GPIO dưới dạng GPIO
từ lúc nhập giấc ngủ
GPIO.setwarnings (Sai)
GPIO.setmode (GPIO. BCM)
từ imutils nhập face_utils
nhập imutils nhập dlib nhập cv2
buzzer = 23
GPIO.setup (buzzer, GPIO. OUT)
def eye_aspect_ratio (mắt):
A = distance.euclidean (eye [1], eye [5]) B = distance.euclid (eye [2], eye [4]) C = distance.euclidean (eye [0], eye [3]) ear = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 explore = dlib.get_frontal_face_detector () dự đoán = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat") # Tệp dữ liệu là mấu chốt của mã
(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 trong khi True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) xám = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) subject = phát hiện (xám, 0) cho đối tượng trong các đối tượng: shape = dự đoán (xám, chủ đề) shape = face_utils.shape_to_np (shape) #converting to 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 (rightEyeHull) cv2. drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0,7, (0, 0, 255), 2) #print (" Dro wsy ")
GPIO.output (buzzer, GPIO. HIGH)
khác: cờ = 0
GPIO.output (buzzer, GPIO. LOW)
cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF if key == ord ("q"): break cv2.destroyAllWindows () cap.stop ()
Đề xuất:
Xây dựng hệ thống thủy canh tự làm mini & vườn thảo mộc thủy canh tự làm với cảnh báo WiFi: 18 bước
Xây dựng Hệ thống thủy canh tự làm nhỏ & Vườn thảo mộc thủy canh tự làm với cảnh báo WiFi: Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách xây dựng hệ thống #DIY #hydroponics. Hệ thống thủy canh tự làm này sẽ tưới theo chu kỳ tưới thủy canh tùy chỉnh với 2 phút bật và 4 phút tắt. Nó cũng sẽ theo dõi mực nước hồ chứa. Hệ thống này
Cảnh báo khát nước Cảnh báo thực vật: 13 bước
Cảnh báo khát thực vật Báo động: Tôi phải trở nên sạch sẽ - Tôi là một phụ huynh thực vật kinh khủng. Thật tuyệt khi lấy được cái đó ra khỏi ngực tôi. Tôi không thể tìm ra nó, liệu nó có ảnh hưởng đến quá trình quang hợp hơi quá mạnh hay ánh sáng của H2O cũ. Có vẻ như tôi sẽ không làm gì để giữ anh chàng này
Hệ thống thông báo mã thông báo: 5 bước
Hệ thống thông báo mã thông báo: Trong phần hướng dẫn trước, chúng ta đã biết cách làm cho Arduino của bạn có thể nói. Hôm nay chúng ta sẽ khám phá thêm một chút về chủ đề tương tự. Tất cả chúng ta đều phải có một lúc nào đó trong đời bắt gặp hệ thống Thông báo có thể là trong ngân hàng hoặc nhà ga xe lửa. Bạn đã bao giờ chiến thắng
Cảnh báo đẩy Arduino cho Chuông cửa, Báo trộm, Báo động khói, v.v.: 8 bước
Cảnh báo đẩy Arduino cho Chuông cửa, Báo trộm, Báo khói, v.v.: Thông báo IoT từ Chuông cửa, Báo trộm, Cảnh báo khói, v.v. bằng Arduino Uno và Ethernet Shield. Chi tiết đầy đủ trên trang web của tôi tại đây Giới thiệu Hộp cảnh báo đẩy Arduino Sử dụng Arduino Uno và Lá chắn Ethernet dựa trên chip Wiznet W5100 để
Cảnh báo cửa Arduino với cảnh báo văn bản: 14 bước (có hình ảnh)
Cảnh báo cửa Arduino có cảnh báo văn bản: Đây là cảnh báo cửa dựa trên Arduino sử dụng công tắc sậy từ tính để xác định trạng thái cửa và có cảnh báo âm thanh và cảnh báo dựa trên tin nhắn văn bản