- Nepieciešamās sastāvdaļas
- OpenCV instalēšana Raspberry Pi
- Citu nepieciešamo pakotņu instalēšana
- Aveņu Pi programmēšana
- Vadītāja miegainības noteikšanas sistēmas pārbaude
Kravas automašīnu vadītāji, kuri dienā un naktī pārvadā kravas un smagus materiālus lielos attālumos, bieži cieš no miega trūkuma. nogurums un miegainība ir vieni no galvenajiem lielo ceļu satiksmes negadījumu cēloņiem. Automobiļu rūpniecība strādā pie dažām tehnoloģijām, kas var noteikt miegainību un brīdināt par to vadītāju.
Šajā projektā mēs izveidosim miega uztveršanas un trauksmes sistēmu vadītājiem, izmantojot Raspberry Pi, OpenCV un Pi kameras moduli. Šīs sistēmas pamatmērķis ir izsekot vadītāja sejas stāvoklim un acu kustībām, un, ja vadītājs jūtas miegains, sistēma aktivizēs brīdinājuma ziņojumu. Tas ir mūsu iepriekšējās sejas orientieru noteikšanas un sejas atpazīšanas programmas paplašinājums.
Nepieciešamās sastāvdaļas
Aparatūras komponenti
- Aveņu Pi 3
- Pi kameras modulis
- Mikro USB kabelis
- Buzzer
Programmatūra un tiešsaistes pakalpojumi
- OpenCV
- Dlib
- Python3
Pirms turpināt vadītāju miegainības noteikšanas projektu , vispirms mums jāinstalē OpenCV, imutils, dlib, Numpy un dažas citas atkarības no šī projekta. Digitālo attēlu apstrādei šeit tiek izmantots OpenCV. Visizplatītākās digitālās attēlu apstrādes programmas ir objektu noteikšana, sejas atpazīšana un cilvēku skaitītājs.
Lai izveidotu šo miega noteikšanas sistēmu, mēs izmantojam tikai Raspberry Pi, Pi kameru un skaņas signālu.
OpenCV instalēšana Raspberry Pi
Pirms OpenCV un citu atkarību instalēšanas Raspberry Pi ir pilnībā jāatjaunina. Izmantojiet šīs komandas, lai atjauninātu Raspberry Pi uz jaunāko versiju:
sudo apt-get atjauninājums
Pēc tam izmantojiet šīs komandas, lai instalētu nepieciešamās atkarības OpenCV instalēšanai jūsu 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
Visbeidzot, instalējiet OpenCV uz Raspberry Pi, izmantojot tālāk norādītās komandas.
pip3 instalēt opencv-contrib-python == 4.1.0.25
Ja esat jauns OpenCV lietotājs, pārbaudiet mūsu iepriekšējās OpenCV apmācības ar Raspberry pi:
- OpenCV instalēšana Raspberry Pi, izmantojot CMake
- Reāllaika sejas atpazīšana ar Raspberry Pi un OpenCV
- Valsts numura pazīšana, izmantojot Raspberry Pi un OpenCV
- Pūļa lieluma novērtēšana, izmantojot OpenCV un Raspberry Pi
Mēs esam izveidojuši arī virkni OpenCV apmācību, sākot no iesācēju līmeņa.
Citu nepieciešamo pakotņu instalēšana
Pirms Raspberry Pi programmēšanas miegainības detektoram, instalēsim pārējās nepieciešamās pakotnes.
Dlib: dlib instalēšana ir mūsdienīgs rīkkopa, kas satur mašīnmācīšanās algoritmus un rīkus reālu problēmu risināšanai. Izmantojiet zemāk esošo komandu, lai instalētu dlib.
pip3 instalēt dlib
NumPy instalēšana: NumPy ir zinātniskās skaitļošanas pamatbibliotēka, kas satur jaudīgu n-dimensiju masīva objektu, nodrošina rīkus C, C ++ uc integrēšanai.
pip3 instalēt numpy
Moduļa sejas atpazīšana instalēšana: Šī bibliotēka tika izmantota, lai atpazītu un manipulētu ar sejām no Python vai komandrindas. Izmantojiet zemāk esošo komandu, lai instalētu sejas atpazīšanas bibliotēku.
Pip3 instalējiet sejas atpazīšanu
Un pēdējā laikā instalējiet eye_game bibliotēku, izmantojot šādu komandu:
pip3 instalēt acu spēli
Aveņu Pi programmēšana
Pilns kods vadītāja miegainības detektoram, izmantojot OpenCV, ir norādīts lapas beigās. Šeit mēs izskaidrojam dažas svarīgas koda daļas labākai izpratnei.
Tātad, kā parasti, sāciet kodu, iekļaujot visas nepieciešamās bibliotēkas.
importēt sejas atpazīšanu importēt cv2 importēt numuru kā np importēšanas laiku importēt cv2 importēt RPi.GPIO kā GPIO importēt acu_spēli
Pēc tam izveidojiet instanci, lai iegūtu video plūsmu no pi kameras. Ja izmantojat vairāk nekā vienu kameru, tad cv2 aizstājiet nulli ar vienu. Funkcija VideoCapture (0) .
video_capture = cv2.VideoCapture (0)
Tagad nākamajās rindās ievadiet faila nosaukumu un ceļu. Manā gadījumā gan kods, gan fails atrodas vienā mapē. Pēc tam izmantojiet sejas kodējumus, lai attēlā iegūtu sejas atrašanās vietu.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Pēc tam izveidojiet divus masīvus, lai saglabātu sejas un to vārdus. Es izmantoju tikai vienu attēlu; kodā varat pievienot vairāk attēlu un to ceļu.
zināmie_kodu_kodējumi = zināmie_sezonas_nosaukumi =
Pēc tam izveidojiet dažus mainīgos, lai saglabātu sejas daļu atrašanās vietas, sejas nosaukumus un kodējumus.
face_locations = face_encodings = face_names = process_this_frame = True
Inside kamēr funkciju, attēlotu video kadrus no straumēšanu un mainīt rāmjus uz mazāka izmēra un arī konvertēt notverti rāmi RGB krāsu sejas atpazīšanas.
ret, frame = video_capture.read () small_frame = cv2.resize (rāmis, (0, 0), fx = 0,25, fy = 0,25) rgb_small_frame = small_frame
Pēc tam palaidiet sejas atpazīšanas procesu, lai videoklipā redzamās sejas salīdzinātu ar attēlu. Un arī iegūstiet sejas daļu atrašanās vietas.
ja 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 (fails, mazs_kadrs)
Ja atpazītā seja sakrīt ar attēlā redzamo seju, izsauciet acu spēles funkciju, lai izsekotu acu kustībām. Kods atkārtoti izsekos acu un acs ābola stāvokli.
face_distances = face_recognition.face_distance (zināms_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) ja sakrīt: nosaukums = zināmie_nosaukumu_nosaukumi = acu_spēles.get_eyeball_direction (fails) druka (virziens)
Ja kods 10 sekundes nenosaka acu kustību, tas aktivizēs trauksmi, lai modinātu cilvēku.
cits: skaits = 1 + skaitīt drukāt (skaitīt) ja (skaitīt> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Brīdinājums! ! Brīdinājums! Konstatēta vadītāja miegainība ")
Pēc tam izmantojiet OpenCV funkcijas, lai uzzīmētu taisnstūri ap seju un uzliktu tekstu. Parādiet arī video rāmjus, izmantojot funkciju cv2.imshow .
cv2. taisnstūris (rāmis, (pa kreisi, augšā), (pa labi, apakšā), (0, 255, 0), 2) cv2. taisnstūris (rāmis, (pa kreisi, apakšā - 35), (pa labi, apakšā), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (rāmis, nosaukums, (pa kreisi + 6, apakšā - 6), fonts, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', kadrs) Iestatiet taustiņu 'S', lai apturētu kodu. ja cv2.waitKey (1) & 0xFF == ord ('s'): pārtraukums
Vadītāja miegainības noteikšanas sistēmas pārbaude
Kad kods ir gatavs, pievienojiet Pi kameru un skaņas signālu Raspberry Pi un palaidiet kodu. Pēc aptuveni 10 sekundēm parādīsies logs ar tiešraidi no jūsu Raspberry Pi kameras. Kad ierīce atpazīs seju, tā uz rāmja izdrukās jūsu vārdu un sāks sekot acu kustībai. Tagad, lai pārbaudītu modinātāju, aizveriet acis uz 7 līdz 8 sekundēm. Kad skaitlis kļūst lielāks par 10, tas iedarbina trauksmi, brīdinot jūs par situāciju.
Šādi jūs varat izveidot miegainības detektoru, izmantojot OpenCV un Raspberry Pi. Ritiniet uz leju, lai atrastu darba video un kodu.