- Komponen Diperlukan
- Menginstal OpenCV di Raspberry Pi
- Menginstal Paket Wajib lainnya
- Memprogram Raspberry Pi
- Menguji Sistem Deteksi Kantuk Pengemudi
Pengemudi truk yang mengangkut kargo dan material berat dalam jarak jauh pada siang dan malam hari, seringkali menderita kurang tidur. kelelahan dan kantuk adalah beberapa penyebab utama kecelakaan besar di Jalan Tol. Industri mobil sedang mengerjakan beberapa teknologi yang dapat mendeteksi kantuk dan mengingatkan pengemudi tentang hal itu.
Dalam proyek ini, kita akan membangun Sistem Penginderaan dan Peringatan Tidur untuk Driver menggunakan modul kamera Raspberry Pi, OpenCV, dan Pi. Tujuan dasar dari sistem ini adalah untuk melacak kondisi wajah dan gerakan mata pengemudi dan jika pengemudi merasa mengantuk maka sistem akan memunculkan pesan peringatan. Ini adalah perpanjangan dari aplikasi pendeteksian landmark wajah dan pengenalan wajah sebelumnya.
Komponen Diperlukan
Komponen Perangkat Keras
- Raspberry Pi 3
- Modul Kamera Pi
- Kabel Mikro USB
- Bel
Perangkat Lunak dan Layanan Online
- OpenCV
- Dlib
- Python3
Sebelum melanjutkan proyek pendeteksi kantuk driver ini , pertama kita perlu menginstal OpenCV, imutils, dlib, Numpy, dan beberapa dependensi lain dalam proyek ini. OpenCV digunakan di sini untuk pemrosesan gambar digital. Aplikasi Pemrosesan Gambar Digital yang paling umum adalah deteksi objek, Pengenalan Wajah, dan penghitung orang.
Di sini kami hanya menggunakan Raspberry Pi, Pi Camera, dan buzzer untuk membangun sistem deteksi Tidur ini.
Menginstal OpenCV di Raspberry Pi
Sebelum menginstal OpenCV dan dependensi lainnya, Raspberry Pi perlu diperbarui sepenuhnya. Gunakan perintah di bawah ini untuk memperbarui Raspberry Pi ke versi terbaru:
sudo apt-get update
Kemudian gunakan perintah berikut untuk menginstal dependensi yang diperlukan untuk menginstal OpenCV di Raspberry Pi Anda.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Terakhir, instal OpenCV di Raspberry Pi menggunakan perintah di bawah ini.
pip3 instal opencv-contrib-python == 4.1.0.25
Jika Anda baru mengenal OpenCV, periksa tutorial OpenCV kami sebelumnya dengan Raspberry pi:
- Menginstal OpenCV di Raspberry Pi menggunakan CMake
- Pengenalan Wajah Real-Time dengan Raspberry Pi dan OpenCV
- Pengakuan Plat Lisensi menggunakan Raspberry Pi dan OpenCV
- Estimasi Crowd Size Menggunakan OpenCV dan Raspberry Pi
Kami juga telah membuat serangkaian tutorial OpenCV mulai dari tingkat pemula.
Menginstal Paket Wajib lainnya
Sebelum memprogram Raspberry Pi untuk Detektor Kantuk, mari instal paket lain yang diperlukan.
Menginstal dlib: dlib adalah perangkat modern yang berisi algoritme dan alat Pembelajaran Mesin untuk masalah dunia nyata. Gunakan perintah di bawah ini untuk menginstal dlib.
pip3 instal dlib
Menginstal NumPy: NumPy adalah pustaka inti untuk komputasi ilmiah yang berisi objek array berdimensi n yang kuat, menyediakan alat untuk mengintegrasikan C, C ++, dll.
pip3 instal numpy
Menginstal modul face_recognition: Perpustakaan ini digunakan untuk mengenali dan memanipulasi wajah dari Python atau baris perintah. Gunakan perintah di bawah ini untuk menginstal pustaka pengenalan wajah.
Pip3 menginstal face_recognition
Dan yang terakhir, instal perpustakaan eye_game menggunakan perintah di bawah ini:
pip3 menginstal permainan mata
Memprogram Raspberry Pi
Kode lengkap untuk Detektor Kantuk Pengemudi Menggunakan OpenCV diberikan di akhir halaman. Di sini kami menjelaskan beberapa bagian penting dari kode untuk pemahaman yang lebih baik.
Jadi, seperti biasa, mulai kode dengan memasukkan semua pustaka yang diperlukan.
impor face_recognition impor cv2 impor numpy sebagai np waktu impor impor cv2 impor RPi.GPIO sebagai GPIO impor eye_game
Setelah itu buatlah sebuah instance untuk mendapatkan video feed dari kamera pi. Jika Anda menggunakan lebih dari satu kamera, maka ganti nol dengan satu di fungsi cv2.VideoCapture (0) .
video_capture = cv2.VideoCapture (0)
Sekarang di baris berikutnya, masukkan nama file dan jalur file. Dalam kasus saya, kode dan file berada di folder yang sama. Kemudian gunakan pengkodean wajah untuk mendapatkan lokasi wajah dalam gambar.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Setelah itu buat dua array untuk menyimpan face dan namanya. Saya hanya menggunakan satu gambar; Anda dapat menambahkan lebih banyak gambar dan jalurnya dalam kode.
known_face_encodings = known_face_names =
Kemudian buat beberapa variabel untuk menyimpan lokasi bagian wajah, nama wajah, dan pengkodean.
face_locations = face_encodings = face_names = process_this_frame = Benar
Di dalam fungsi while , ambil frame video dari streaming dan ubah ukuran frame ke ukuran yang lebih kecil dan juga ubah frame yang diambil menjadi warna RGB untuk pengenalan wajah.
ret, frame = video_capture.read () small_frame = cv2.resize (frame, (0, 0), fx = 0.25, fy = 0.25) rgb_small_frame = small_frame
Setelah itu, jalankan proses pengenalan wajah untuk membandingkan wajah yang ada di video dengan gambar. Dan juga dapatkan lokasi bagian wajah.
jika process_this_frame: face_locations = face_recognition.face_locations (rgb_small_frame) face_encodings = face_recognition.face_encodings (rgb_small_frame, face_locations) cv2.imwrite (file, small_frame)
Jika wajah yang dikenali cocok dengan wajah dalam gambar, maka panggil fungsi eyegame untuk melacak gerakan mata. Kode tersebut akan berulang kali melacak posisi mata dan bola mata.
face_distances = face_recognition.face_distance (known_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) jika cocok: name = known_face_names direction = eye_game.get_eyeball_direction (file) print (arah)
Jika kode tidak mendeteksi gerakan mata selama 10 detik, maka itu akan memicu alarm untuk membangunkan orang tersebut.
lain: hitung = 1 + hitung cetak (hitung) jika (hitung> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Waspada! ! Waspada !! Kantuk Pengemudi Terdeteksi ")
Kemudian gunakan fungsi OpenCV untuk menggambar persegi panjang di sekitar wajah dan meletakkan teks di atasnya. Juga, tunjukkan bingkai video menggunakan fungsi cv2.imshow .
cv2.rectangle (bingkai, (kiri, atas), (kanan, bawah), (0, 255, 0), 2) cv2. rectangle (bingkai, (kiri, bawah - 35), (kanan, bawah), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (bingkai, nama, (kiri + 6, bawah - 6), font, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', frame) Atur Key 'S' untuk menghentikan kode. jika cv2.waitKey (1) & 0xFF == ord ('s'): break
Menguji Sistem Deteksi Kantuk Pengemudi
Setelah kode siap, hubungkan kamera Pi dan buzzer ke Raspberry Pi dan jalankan kodenya. Setelah Kira-kira 10 detik, sebuah jendela akan muncul dengan streaming langsung dari kamera Raspberry Pi Anda. Saat perangkat mengenali wajah, itu akan mencetak nama Anda di bingkai dan mulai melacak gerakan mata. Sekarang tutup mata Anda selama 7 hingga 8 detik untuk menguji alarm. Ketika hitungannya menjadi lebih dari 10, itu akan memicu alarm, memperingatkan Anda tentang situasinya.
Beginilah cara Anda membangun Drowsiness Detector menggunakan OpenCV dan Raspberry Pi. Gulir ke bawah untuk video dan Kode yang berfungsi.