- Súčasti sú povinné
- Inštalácia OpenCV na Raspberry Pi
- Inštalácia ďalších požadovaných balíkov
- Programovanie Raspberry Pi
- Testovanie systému detekcie ospalosti vodiča
Vodiči nákladných vozidiel, ktorí prepravujú náklad a ťažké materiály na veľké vzdialenosti počas dňa aj v noci, často trpia nedostatkom spánku. únava a ospalosť sú jednou z hlavných príčin veľkých nehôd na diaľniciach. Automobilový priemysel pracuje na niektorých technológiách, ktoré dokážu zistiť ospalosť a upozorniť na ňu vodiča.
V rámci tohto projektu budeme budovať systém snímania a varovania spánku pre vodičov využívajúci kamerový modul Raspberry Pi, OpenCV a Pi. Základným účelom tohto systému je sledovať stav tváre vodiča a pohyby očí. Ak sa vodič cíti ospalý, systém vydá varovnú správu. Toto je rozšírenie našej predchádzajúcej aplikácie na detekciu orientačných bodov tváre a rozpoznávanie tváre.
Súčasti sú povinné
Hardvérové komponenty
- Raspberry Pi 3
- Modul kamery Pi
- Kábel micro USB
- Bzučiak
Softvér a online služby
- OpenCV
- Dlib
- Python3
Pred pokračovaním v tomto projekte detekcie ospalosť vodiča , najprv musíme nainštalovať OpenCV, imutils, DLib, NumPy, a niektoré iné závislosťou na tomto projekte. OpenCV sa tu používa na digitálne spracovanie obrazu. Najbežnejšie aplikácie digitálneho spracovania obrazu sú detekcia objektov, rozpoznávanie tváre a počítanie osôb.
Na výrobu tohto detekčného systému spánku používame iba Raspberry Pi, kameru Pi a bzučiak.
Inštalácia OpenCV na Raspberry Pi
Pred inštaláciou OpenCV a ďalších závislostí je potrebné Raspberry Pi úplne aktualizovať. Pomocou nasledujúcich príkazov aktualizujte Raspberry Pi na najnovšiu verziu:
sudo apt-get aktualizácia
Potom pomocou nasledujúcich príkazov nainštalujte požadované závislosti potrebné na inštaláciu OpenCV na vašom 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 nainštalovať libqt4-test –y
Nakoniec nainštalujte OpenCV na Raspberry Pi pomocou nižšie uvedených príkazov.
pip3 nainštaluj opencv-contrib-python == 4.1.0.25
Ak ste v OpenCV nováčikom, pozrite si naše predchádzajúce návody k OpenCV s Raspberry pi:
- Inštalácia OpenCV na Raspberry Pi pomocou CMake
- Rozpoznávanie tváre v reálnom čase s Raspberry Pi a OpenCV
- Rozpoznávanie ŠPZ pomocou Raspberry Pi a OpenCV
- Odhad veľkosti davu pomocou OpenCV a Raspberry Pi
Tiež sme vytvorili sériu tutoriálov OpenCV začínajúcich od úrovne začiatočníkov.
Inštalácia ďalších požadovaných balíkov
Pred programovaním Raspberry Pi pre detektor ospalosti si nainštalujeme ďalšie požadované balíčky.
Inštalácia dlib: dlib je moderná sada nástrojov, ktorá obsahuje algoritmy strojového učenia a nástroje na riešenie problémov v reálnom svete. Pomocou nižšie uvedeného príkazu nainštalujte dlib.
pip3 nainštalovať dlib
Inštalácia NumPy: NumPy je hlavná knižnica pre vedecké výpočty, ktorá obsahuje výkonný objekt n-dimenzionálneho poľa, poskytuje nástroje na integráciu C, C ++ atď.
pip3 nainštalovať numpy
Inštalácia modulu face_recognition: Táto knižnica sa používa na rozpoznávanie a manipuláciu s tvárami z Pythonu alebo príkazového riadku. Pomocou nižšie uvedeného príkazu nainštalujte knižnicu rozpoznávania tváre.
Pip3 nainštaluje face_recognition
A na konci nainštalujte knižnicu eye_game pomocou nasledujúceho príkazu:
pip3 nainštalujte očnú hru
Programovanie Raspberry Pi
Kompletný kód pre detektor ospalosti vodiča pomocou OpenCV je uvedený na konci stránky. Tu vysvetľujeme niektoré dôležité časti kódu pre lepšie pochopenie.
Ako obvykle teda začnite kód zahrnutím všetkých požadovaných knižníc.
import face_recognition import cv2 import numpy ako np čas importu import cv2 import RPi.GPIO ako GPIO import eye_game
Potom vytvorte inštanciu na získanie videa z kamery pi. Ak používate viac ako jednu kameru, potom vo funkcii cv2.VideoCapture (0) nahraďte nulu jedným.
video_capture = cv2.VideoCapture (0)
Teraz na ďalších riadkoch zadajte názov súboru a cestu k súboru. V mojom prípade sú kód aj súbor v rovnakom priečinku. Potom pomocou kódovania tváre zistite polohu tváre na obrázku.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Potom vytvorte dve polia na uloženie tvárí a ich mien. Používam iba jeden obrázok; do kódu môžete pridať ďalšie obrázky a ich cesty.
known_face_encodings = known_face_names =
Potom vytvorte niekoľko premenných na uloženie umiestnení častí tváre, mien tváre a kódovania.
face_locations = face_encodings = face_names = process_this_frame = Pravda
Vo funkcii while môžete snímať videozáznamy zo streamovania, meniť ich veľkosť a zmenšiť ich veľkosť. Taktiež urobte prevod snímanej snímky na farbu RGB na rozpoznanie tváre.
ret, frame = video_capture.read () small_frame = cv2.resize (frame, (0, 0), fx = 0,25, fy = 0,25) rgb_small_frame = small_frame
Potom spustite proces rozpoznávania tváre a porovnajte tváre vo videu s obrázkom. A tiež získajte polohy častí tváre.
if 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 (súbor, malý_rámček)
Ak sa rozpoznaná tvár zhoduje s tvárou na obrázku, zavolajte funkciu eyegame na sledovanie pohybov očí. Kód bude opakovane sledovať polohu očí a očnej gule.
face_distances = face_recognition.face_distance (known_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) ak sa zhoduje: name = known_face_names direction = eye_game.get_eyeball_direction (súbor) tlač (smer)
Ak kód po dobu 10 sekúnd nezistí žiadny pohyb očí, spustí alarm, aby danú osobu zobudil.
else: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Alert! ! Výstraha !! Zistená ospalosť vodiča ")
Potom pomocou funkcií OpenCV nakreslite okolo tváre obdĺžnik a vložte na ňu text. Videozáznamy tiež zobrazujte pomocou funkcie cv2.imshow .
cv2.rectangle (frame, (left, top), (right, bottom), (0, 255, 0), 2) cv2.rectangle (frame, (left, bottom - 35), (right, bottom), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (rám, meno, (vľavo + 6, dole - 6), písmo, 1,0, (0, 0, 255), 1) cv2.imshow („Video“, rámček) Nastavením klávesu „S“ zastavíte kód. if cv2.waitKey (1) & 0xFF == ord ('s'): break
Testovanie systému detekcie ospalosti vodiča
Keď je kód pripravený, pripojte kameru Pi a bzučiak k Raspberry Pi a spustite kód. Po približne 10 sekundách sa zobrazí okno so živým vysielaním z vašej kamery Raspberry Pi. Keď zariadenie rozpozná tvár, vytlačí vaše meno na rám a začne sledovať pohyb očí. Teraz zatvorte oči na 7 až 8 sekúnd, aby ste vyskúšali budík. Keď je počet viac ako 10, spustí sa alarm, ktorý vás upozorní na situáciu.
Takto môžete zostaviť detektor ospalosti pomocou OpenCV a Raspberry Pi. Posuňte sa nadol na pracovné video a kód.