Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Setiap tahun banyak orang kehilangan nyawa karena kecelakaan lalu lintas yang fatal di seluruh dunia dan mengemudi dalam keadaan mengantuk adalah salah satu penyebab utama kecelakaan dan kematian di jalan. Kelelahan dan tidur mikro di kontrol mengemudi sering menjadi akar penyebab kecelakaan serius. Namun, tanda-tanda awal kelelahan dapat dideteksi sebelum situasi kritis muncul dan oleh karena itu, deteksi kelelahan pengemudi dan indikasinya adalah topik penelitian yang sedang berlangsung. Sebagian besar metode tradisional untuk mendeteksi kantuk didasarkan pada aspek perilaku sementara beberapa mengganggu dan dapat mengalihkan perhatian pengemudi, sementara beberapa memerlukan sensor yang mahal. Oleh karena itu, dalam makalah ini dikembangkan dan diimplementasikan sistem pendeteksi kantuk pengemudi yang ringan dan real time pada aplikasi Android. Sistem merekam video dan mendeteksi wajah pengemudi di setiap frame dengan menggunakan teknik pemrosesan gambar. Sistem ini mampu mendeteksi landmark wajah, menghitung Eye Aspect Ratio (EAR) dan Eye Closure Ratio (ECR) untuk mendeteksi kantuk pengemudi berdasarkan ambang batas adaptif. Algoritma pembelajaran mesin telah digunakan untuk menguji kemanjuran pendekatan yang diusulkan. Hasil empiris menunjukkan bahwa model yang diusulkan mampu mencapai akurasi 84% menggunakan pengklasifikasi hutan acak.
Langkah 1: Hal-hal yang Anda Butuhkan
1. RASPBERRY PI
2. WEBCAM (C270 HD WEB CAM UNTUK HASIL YANG LEBIH BAIK)
Versi PC mungkin memerlukan beberapa perubahan dalam kode
Langkah 2: Kode Python Dengan Dataset Prediktor Bentuk Mata (Versi PC)
untuk mendeteksi mata secara lebih efektif dalam video waktu nyata, kita dapat menggunakan file.dat di bawah ini.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Unduh file.dat dari tautan di atas dan jalankan kode python di bawah ini
kode python
from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2
def eye_aspect_ratio(mata):
A = jarak.euclidean(mata[1], mata[5]) B = jarak.euclidean(mata[2], mata[4]) C = jarak.euclidean(mata[0], mata[3]) telinga = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# File dat adalah inti dari kode
(lMulai, akhir) = face_utils. FACIAL_LANDMARKS_68_IDXS["mata_kiri"]
(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, lebar=450) abu-abu = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) subject = detect(abu-abu, 0) untuk subjek dalam subjek: shape = predict(abu-abu, subjek) shape = face_utils.shape_to_np(shape)#mengonversi ke NumPy Array leftEye = shape[lStart:lEnd] rightEye = bentuk[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull (mata kanan) cv2.convexHull 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()
Langkah 3: Versi Raspberry Pi
ketika orang menutup matanya maka raspberry pi akan memberi Anda peringatan
HUBUNGKAN buzzer Anda ke pin 23 (lihat gambar)
dari jarak impor scipy.spatial
impor RPi. GPIO sebagai GPIO
dari waktu impor tidur
GPIO.setwarnings(Salah)
GPIO.setmode(GPIO. BCM)
dari imutils impor face_utils
impor imutils impor dlib impor cv2
bel = 23
GPIO.setup(buzzer, GPIO. OUT)
def eye_aspect_ratio(mata):
A = jarak.euclidean(mata[1], mata[5]) B = jarak.euclidean(mata[2], mata[4]) C = jarak.euclidean(mata[0], mata[3]) telinga = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# File dat adalah inti dari kode
(lMulai, akhir) = face_utils. FACIAL_LANDMARKS_68_IDXS["mata_kiri"]
(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, lebar=450) abu-abu = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) subject = detect(abu-abu, 0) untuk subjek dalam subjek: shape = prediksi(abu-abu, subjek) shape = face_utils.shape_to_np(shape)#mengonversi ke NumPy Array leftEye = shape[lStart:lEnd] rightEye = bentuk[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull (mata kanan) cv2.convexHull 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)
lain: bendera = 0
GPIO.output(buzzer, GPIO. LOW)
cv2.imshow("Frame", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()
Direkomendasikan:
Sistem Peringatan Geser Muka: 6 Langkah
Sistem Peringatan Slide Advance: Di Brown Dog Gadgets kami melakukan banyak streaming video untuk lokakarya, dan pengaturan kami mencakup satu orang di kamera dan orang lain sebagai produser yang menjalankan perangkat lunak, memantau jendela obrolan, dan melakukan perpindahan dan kemajuan kamera slide
Sistem Peringatan Parkir Terbalik Mobil Arduino - Langkah demi Langkah: 4 Langkah
Sistem Peringatan Parkir Mundur Mobil Arduino | Langkah demi Langkah: Pada proyek kali ini, saya akan merancang Rangkaian Sensor Parkir Mundur Mobil Arduino sederhana menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem peringatan mundur mobil berbasis Arduino ini dapat digunakan untuk Navigasi Otonom, Jarak Robot, dan r
Sistem Peringatan Kecelakaan Menggunakan GSM, GPS dan Accelerometer: 5 Langkah (dengan Gambar)
Sistem Peringatan Kecelakaan Menggunakan GSM, GPS dan Akselerometer: Tolong Pilih Saya untuk KontesTolong pilih saya untuk kontesSaat ini banyak orang meninggal di jalan karena kecelakaan, penyebab utamanya adalah "delay in rescue". Masalah ini sangat besar di negara berkembang, jadi saya merancang proyek ini untuk menyelamatkan
Sistem Lampu Peringatan Cuaca: 6 Langkah
Sistem Lampu Peringatan Cuaca: Sistem pencahayaan peringatan cuaca mengubah pencahayaan untuk menunjukkan peringatan cuaca atau jam tangan yang berbeda. Sistem ini memanfaatkan data cuaca yang dapat diakses secara bebas untuk membuat perubahan pencahayaan untuk menunjukkan status cuaca. Raspberry pi (melalui node-red) memeriksa
Sistem Peringatan Lonceng Lorong: 4 Langkah
Sistem Peringatan Lonceng Lorong: Di sekolah ada bel yang menunjukkan kapan harus terjadi perubahan kelas. Mereka pertama kali berdering untuk menunjukkan kapan kelas harus berakhir, dan kemudian mereka berdering untuk kedua kalinya untuk menunjukkan kapan kelas berikutnya harus dimulai. Jika seorang siswa terlambat, maka mereka biasanya