- Kinakailangan ang Mga Bahagi
- Pag-install ng OpenCV sa Raspberry Pi
- Pag-install ng iba pang Mga Kinakailangan na Pakete
- Pagprogram ng Raspberry Pi
- Pagsubok sa Driver Drowsiness Detection System
Ang mga driver ng trak na nagdadala ng mga kargamento at mabibigat na materyales sa mahabang distansya sa oras ng araw at gabi, madalas silang nagdurusa mula sa kawalan ng tulog. ang pagkapagod at pag-aantok ay ilan sa mga pangunahing sanhi ng mga pangunahing aksidente sa Highway. Ang mga industriya ng sasakyan ay nagtatrabaho sa ilang mga teknolohiya na maaaring makita ang pag-aantok at alerto ang driver tungkol dito.
Sa proyektong ito, magtatayo kami ng isang Sleep Sensing at Alerting System para sa Mga Driver na gumagamit ng module ng Raspberry Pi, OpenCV, at Pi camera. Ang pangunahing layunin ng sistemang ito ay upang subaybayan ang kondisyon ng mukha ng driver at paggalaw ng mata at kung ang drayber ay nag-aantok, kung gayon ang system ay magpapalitaw ng isang mensahe ng babala. Ito ang extension ng aming nakaraang pagtuklas ng landmark sa mukha at application ng pagkilala sa Mukha.
Kinakailangan ang Mga Bahagi
Mga Bahagi ng Hardware
- Raspberry Pi 3
- Pi Module ng Camera
- Micro USB Cable
- Buzzer
Software at Mga Serbisyong Online
- OpenCV
- Dlib
- Python3
Bago magpatuloy sa proyektong ito ng pag -antok ng drayber , una, kailangan naming i-install ang OpenCV, mga imutil, dlib, Numpy, at ilang iba pang mga dependency sa proyektong ito. Ginagamit ang OpenCV dito para sa pagproseso ng digital na imahe. Ang pinakakaraniwang mga application ng Digital Image Processing ay ang pagtuklas ng object, Pagkilala sa Mukha, at counter ng mga tao.
Dito ginagamit lamang namin ang Raspberry Pi, Pi Camera, at isang buzzer upang maitayo ang sistemang ito sa pagtuklas ng Sleep.
Pag-install ng OpenCV sa Raspberry Pi
Bago i-install ang OpenCV at iba pang mga dependency, ang Raspberry Pi ay kailangang ganap na ma-update. Gamitin ang mga utos sa ibaba upang i-update ang Raspberry Pi sa pinakabagong bersyon:
sudo apt-get update
Pagkatapos ay gamitin ang mga sumusunod na utos upang mai-install ang kinakailangang mga dependency para sa pag-install ng OpenCV sa iyong Raspberry Pi.
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
Panghuli, i-install ang OpenCV sa Raspberry Pi gamit ang mga utos sa ibaba.
pip3 i-install ang opencv-contrib-python == 4.1.0.25
Kung bago ka sa OpenCV, suriin ang aming nakaraang mga tutorial sa OpenCV gamit ang Raspberry pi:
- Pag-install ng OpenCV sa Raspberry Pi gamit ang CMake
- Pagkilala sa Real-Time na Mukha kasama ang Raspberry Pi at OpenCV
- Pagkilala sa Plate ng Lisensya gamit ang Raspberry Pi at OpenCV
- Pagtatantya ng Laki ng Crowd Gamit ang OpenCV at Raspberry Pi
Lumikha din kami ng isang serye ng mga tutorial ng OpenCV na nagsisimula sa antas ng nagsisimula.
Pag-install ng iba pang Mga Kinakailangan na Pakete
Bago iprograma ang Raspberry Pi para sa Detector ng Pag-aantok, i-install natin ang iba pang kinakailangang mga pakete.
Ang pag-install ng dlib: dlib ay ang modernong toolkit na naglalaman ng mga algorithm ng Pag-aaral ng Machine at mga tool para sa mga problema sa totoong mundo. Gamitin ang utos sa ibaba upang mai-install ang dlib.
pip3 i-install ang dlib
Pag-install ng NumPy: Ang NumPy ay ang pangunahing silid-aklatan para sa pang-agham na computing na naglalaman ng isang malakas na n-dimensional na object ng array, nagbibigay ng mga tool para sa pagsasama ng C, C ++, atbp.
pip3 i-install ang numpy
Pag-install ng module ng face_recognition: Ginamit ng library na ito upang Makilala at mamanipula ang mga mukha mula sa Python o sa linya ng utos. Gamitin ang utos sa ibaba upang mai-install ang library ng pagkilala sa mukha.
Pip3 i-install ang face_recognition
At sa huling, i-install ang eye_game library gamit ang command sa ibaba:
pip3 i-install ang eye-game
Pagprogram ng Raspberry Pi
Ang kumpletong code para sa Driver Drowsiness Detector na Paggamit ng OpenCV ay ibinibigay sa dulo ng pahina. Narito ipinapaliwanag namin ang ilang mahahalagang bahagi ng code para sa mas mahusay na pag-unawa.
Kaya, tulad ng dati, simulan ang code sa pamamagitan ng pagsasama ng lahat ng kinakailangang mga aklatan.
import face_recognition import cv2 import numpy as np import time import cv2 import RPi.GPIO bilang GPIO import eye_game
Pagkatapos nito, lumikha ng isang halimbawa upang makuha ang feed ng video mula sa pi camera. Kung gumagamit ka ng higit sa isang camera, pagkatapos ay palitan ang zero ng isa sa cv2.VideoCapture (0) na pagpapaandar.
video_capture = cv2.VideoCapture (0)
Ngayon sa mga susunod na linya, ipasok ang pangalan ng file at landas ng file. Sa aking kaso, ang parehong code at file ay nasa parehong folder. Pagkatapos ay gamitin ang mga encoding ng mukha upang makuha ang lokasyon ng mukha sa larawan.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Pagkatapos nito lumikha ng dalawang mga array upang i-save ang mga mukha at kanilang mga pangalan. Gumagamit lamang ako ng isang imahe; maaari kang magdagdag ng higit pang mga imahe at kanilang mga landas sa code.
know_face_encodings = kilala_face_names =
Pagkatapos ay lumikha ng ilang mga variable upang maiimbak ang mga lokasyon ng mga bahagi ng mukha, mga pangalan ng mukha, at pag-encode.
face_locations = face_encodings = face_names = process_this_frame = True
Sa loob ng pagpapaandar habang , kunin ang mga frame ng video mula sa streaming at palitan ang laki ng mga frame sa mas maliit na sukat at i-convert din ang nakunan ng frame sa Kulay ng RGB para sa pagkilala sa mukha.
ret, frame = video_capture.read () maliit_frame = cv2.resize (frame, (0, 0), fx = 0.25, fy = 0.25) rgb_small_frame = maliit_frame
Pagkatapos nito, patakbuhin ang proseso ng pagkilala sa mukha upang ihambing ang mga mukha sa video sa imahe. At makuha rin ang mga lokasyon ng mga bahagi ng mukha.
kung 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, maliit_frame)
Kung ang kinikilalang mukha ay tumutugma sa mukha sa imahe, pagkatapos ay tawagan ang eyegame function upang subaybayan ang paggalaw ng mata. Ang code ay paulit-ulit na subaybayan ang posisyon ng mata at eyeball.
face_distances = face_recognition.face_distance (kilala_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) kung tumutugma: name = know_face_names direction = eye_game.get_eyeball_direction (file) print (direksyon)
Kung ang code ay hindi nakakakita ng anumang paggalaw ng mata sa loob ng 10 segundo, pagkatapos ito ay magpapalitaw ng alarma upang gisingin ang tao.
iba pa: count = 1 + count print (count) kung (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) oras. tulog (2) GPIO.output (BUZZER, GPIO.LOW) print ("Alert! ! Alerto !! Nakita ang Pag-aantok ng Driver ")
Pagkatapos ay gamitin ang mga pagpapaandar ng OpenCV upang gumuhit ng isang rektanggulo sa paligid ng mukha at maglagay ng teksto dito. Gayundin, ipakita ang mga frame ng video gamit ang pagpapaandar ng cv2.imshow .
cv2.rectangle (frame, (kaliwa, itaas), (kanan, ibaba), (0, 255, 0), 2) cv2.rectangle (frame, (kaliwa, ibaba - 35), (kanan, ibaba), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putTxt (frame, pangalan, (kaliwa + 6, ibaba - 6), font, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', frame) Itakda ang Key 'S' upang ihinto ang code. kung cv2.waitKey (1) & 0xFF == ord ('s'): masira
Pagsubok sa Driver Drowsiness Detection System
Kapag handa na ang code, ikonekta ang Pi camera at buzzer sa Raspberry Pi at patakbuhin ang code. Matapos ang Humigit-kumulang 10 segundo, lilitaw ang isang window kasama ang live streaming mula sa iyong Raspberry Pi camera. Kapag kinikilala ng aparato ang mukha, i-print nito ang iyong pangalan sa frame at simulang subaybayan ang paggalaw ng mata. Ipikit mo ngayon ang iyong mga mata sa loob ng 7 hanggang 8 segundo upang subukan ang alarma. Kapag ang bilang ay naging higit sa 10, ito ay magpapalitaw ng isang alarma, inaalerto ka tungkol sa sitwasyon.
Ito ay kung paano mo mabubuo ang Drowsiness Detector gamit ang OpenCV at Raspberry Pi. Mag-scroll pababa para sa gumaganang video at Code.