Isi kandungan:
- Langkah 1: Perkara yang Anda Perlu
- Langkah 2: Python Code With Eyes Shape Predictor Dataset (Versi PC)
- Langkah 3: Versi Raspberry Pi
Video: Sistem Amaran Mengantuk: 3 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Setiap tahun banyak orang kehilangan nyawa akibat kemalangan jalan raya yang membawa maut di seluruh dunia dan mengantuk adalah salah satu penyebab utama kemalangan jalan raya dan kematian. Keletihan dan tidur mikro pada kawalan pemanduan sering menjadi punca kemalangan serius. Walau bagaimanapun, tanda-tanda awal keletihan dapat dikesan sebelum keadaan kritikal muncul dan oleh itu, pengesanan keletihan pemandu dan petunjuknya adalah topik penyelidikan yang sedang dijalankan. Sebilangan besar kaedah tradisional untuk mengesan mengantuk didasarkan pada aspek tingkah laku sementara ada yang mengganggu dan mungkin mengalihkan perhatian pemandu, sementara ada yang memerlukan sensor mahal. Oleh itu, dalam makalah ini, sistem pengesanan mengantuk pemandu masa nyata ringan dikembangkan dan dilaksanakan pada aplikasi Android. Sistem ini merakam video dan mengesan wajah pemandu di setiap bingkai dengan menggunakan teknik pemprosesan gambar. Sistem ini mampu mengesan mercu tanda wajah, mengira Nisbah Aspek Mata (EAR) dan Nisbah Penutupan Mata (ECR) untuk mengesan rasa mengantuk pemandu berdasarkan tahap adaptif. Algoritma pembelajaran mesin telah digunakan untuk menguji keberkesanan pendekatan yang dicadangkan. Hasil empirikal menunjukkan bahawa model yang dicadangkan dapat mencapai ketepatan 84% menggunakan pengelasan hutan secara rawak.
Langkah 1: Perkara yang Anda Perlu
1. RASPBERRY PI
2. WEBCAM (C270 HD WEB CAM UNTUK HASIL YANG LEBIH BAIK)
Versi PC mungkin memerlukan beberapa perubahan dalam kod
Langkah 2: Python Code With Eyes Shape Predictor Dataset (Versi PC)
untuk mengesan mata dengan berkesan dalam video masa nyata, kita boleh menggunakan fail.dat berikut ini.
drive.google.com/open?id=1UiSHe72L4TeN14VK…
Muat turun fail.dat dari pautan di atas dan jalankan kod python di bawah
Kod Python
dari scipy.jarak import spatial dari 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) ambang telinga kembali = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () prediksi = dlib.shape_predictor (". / Bentuk_predictor_68_face_landmarks.dat") # Fail Dat adalah inti kod
(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 while True: ret, frame = cap.read () frame = imutils.resize (bingkai, lebar = 450) kelabu = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) subjek = mengesan (kelabu, 0) untuk subjek dalam subjek: bentuk = ramalan (kelabu, subjek) bentuk = face_utils.shape_to_np (bentuk) # menukar ke NumPy Array leftEye = bentuk [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.conve drawContours (bingkai, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (bingkai, [rightEyeHull], -1, (0, 255, 0), 1) jika telinga = frame_check: cv2.putText (bingkai, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (bingkai, "**************** 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
apabila orang menutup matanya maka raspberry pi akan memberi anda amaran
Sambungkan bel anda ke pin 23 (lihat gambar)
dari jarak import scipy.spatial
import RPi. GPIO sebagai GPIO
dari waktu tidur import
GPIO.setwarnings (Salah)
GPIO.setmode (GPIO. BCM)
dari imutils import face_utils
import imutils import dlib import cv2
buzzer = 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) ambang telinga kembali = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () prediksi = dlib.shape_predictor (". / Bentuk_predictor_68_face_landmarks.dat") # Fail Dat adalah inti kod
(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 while True: ret, frame = cap.read () frame = imutils.resize (bingkai, lebar = 450) kelabu = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) subjek = mengesan (kelabu, 0) untuk subjek dalam subjek: bentuk = ramalan (kelabu, subjek) bentuk = face_utils.shape_to_np (bentuk) # menukar ke NumPy Array leftEye = bentuk [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.conve drawContours (bingkai, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (bingkai, [rightEyeHull], -1, (0, 255, 0), 1) jika telinga = frame_check: cv2.putText (bingkai, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (bingkai, "**************** 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 ()
Disyorkan:
Sistem Lampu Amaran Cuaca: 6 Langkah
Sistem Cahaya Peringatan Cuaca: Sistem pencahayaan amaran cuaca mengubah pencahayaan untuk menunjukkan amaran cuaca atau jam tangan yang berbeza. Sistem ini memanfaatkan data cuaca yang dapat diakses secara bebas untuk membuat perubahan pencahayaan untuk menunjukkan status cuaca. Raspberry pi (melalui simpul-merah) memeriksa
Sistem Amaran Lorong Lorong: 4 Langkah
Sistem Amaran Lorong Lorong: Di sekolah terdapat loceng yang menunjukkan bila perubahan kelas harus berlaku. Mereka pertama kali berdering untuk menunjukkan kapan kelas harus berakhir, dan kemudian mereka berdering kali kedua untuk menunjukkan kapan kelas seterusnya harus dimulakan. Sekiranya pelajar terlambat, maka mereka biasanya mempunyai
Buat Sistem Amaran Pemberitahuan Bercakap / Suara: 4 Langkah
Buat Sistem Peringatan Pemberitahuan / Suara Bercakap: Projek ini kami buat Sistem Pemberitahuan dan Peringatan Berbual / Suara. Sekurang-kurangnya dua sensor boleh digunakan dalam projek ini
Makey Makey - Sistem Amaran Awal untuk Angin Tinggi: 5 Langkah
Makey Makey - Sistem Amaran Awal untuk Angin Tinggi: Ini " sistem amaran awal " cabaran reka bentuk akan diberikan kepada sekumpulan pelajar. Objektifnya adalah untuk sekumpulan pelajar (dua atau tiga per kumpulan) merancang sistem yang memberi amaran kepada orang ramai untuk berlindung dari angin yang menjadi bahaya
HaptiGuard - Sistem Amaran Samping: 3 Langkah (dengan Gambar)
HaptiGuard - Sistem Peringatan Sisi Jalan: Sistem Peringatan Samping Jalan yang cepat dan kotor sebagai idea sampingan Fotonik Peribadi dari Kumpulan Komputasi Media Aachen, yang dibiayai oleh kementerian pendidikan dan sains Jerman. Setiap kali ada sesuatu yang menyusahkan anda yang tidak dapat anda dengar (baik kerana o