- Szükséges alkatrészek
- Az OpenCV telepítése a Raspberry Pi programba
- Más szükséges csomagok telepítése
- A Raspberry Pi programozása
- A járművezető álmosság-érzékelő rendszerének tesztelése
A teherautó-sofőrök, akik nappal és éjszaka nagy távolságokon szállítják a rakományt és a nehéz anyagokat, gyakran szenvednek alváshiánytól. a fáradtság és az álmosság az egyik fő oka a nagy baleseteknek az autópályákon. Az autóipar néhány olyan technológián dolgozik, amelyek képesek észlelni az álmosságot és figyelmeztetni a sofőrt.
Ebben a projektben alvásérzékelő és riasztórendszert fogunk építeni az illesztőprogramok számára Raspberry Pi, OpenCV és Pi kamera modul használatával. A rendszer alapvető célja a vezető arcának és a szemmozgások nyomon követése, és ha a sofőr álmosságot érez, akkor a rendszer figyelmeztető üzenetet vált ki. Ez kiterjeszti a korábbi arcmérő érzékelés és Arcfelismerő alkalmazásunkat.
Szükséges alkatrészek
Hardver alkatrészek
- Málna Pi 3
- Pi kamera modul
- Mikro USB kábel
- Berregő
Szoftver és online szolgáltatások
- OpenCV
- Dlib
- Python3
Mielőtt folytatnánk ezt az illesztőprogram-álmosság-felderítő projektet , először telepítenünk kell az OpenCV-t, az imutils, a dlib, a Numpy és néhány más függőséget a projektbe. Az OpenCV-t itt használják digitális képfeldolgozásra. A digitális képfeldolgozás leggyakoribb alkalmazásai az objektumfelismerés, az arcfelismerés és az emberek számlálója.
Itt csak Raspberry Pi-t, Pi-kamerát és egy hangjelzőt használunk az alvásérzékelő rendszer felépítéséhez.
Az OpenCV telepítése a Raspberry Pi programba
Az OpenCV és más függőségek telepítése előtt a Raspberry Pi-t teljesen frissíteni kell. Az alábbi parancsokkal frissítheti a Raspberry Pi legújabb verzióját:
sudo apt-get frissítés
Ezután a következő parancsokkal telepítse az OpenCV telepítéséhez szükséges függőségeket a Raspberry Pi-re.
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-teszt -y
Végül telepítse az OpenCV-t a Raspberry Pi-re az alábbi parancsok segítségével.
pip3 install opencv-contrib-python == 4.1.0.25
Ha még nem ismeri az OpenCV alkalmazást, akkor nézze meg korábbi OpenCV oktatóanyagainkat a Raspberry pi programmal:
- Az OpenCV telepítése a Raspberry Pi-re a CMake segítségével
- Valós idejű arcfelismerés Raspberry Pi-vel és OpenCV-vel
- Rendszámfelismerés Raspberry Pi és OpenCV használatával
- A tömeg méretének becslése OpenCV és Raspberry Pi használatával
Létrehoztunk egy sor OpenCV oktatóanyagot a kezdő szinttől kezdve.
Más szükséges csomagok telepítése
Mielőtt programozná a Raspberry Pi-t az álmosság-érzékelőhöz, telepítsük a többi szükséges csomagot.
A dlib: dlib telepítése a modern eszközkészlet, amely a Machine Learning algoritmusokat és a valós problémák megoldására szolgáló eszközöket tartalmazza. Az alábbi paranccsal telepítse a dlib fájlt.
pip3 install dlib
A NumPy telepítése: A NumPy a tudományos számítások alapkönyvtára, amely egy erőteljes n-dimenziós tömb objektumot tartalmaz, eszközöket biztosít a C, C ++ stb. Integrálásához.
pip3 install numpy
Az arc_felismerés modul telepítése: Ez a könyvtár arcok felismerésére és manipulálására szolgál a Python vagy a parancssor segítségével. Az alábbi paranccsal telepítse az arcfelismerő könyvtárat.
Pip3 install face_recognition
És az utolsóban telepítse az eye_game könyvtárat az alábbi paranccsal:
pip3 telepítse a szemjátékot
A Raspberry Pi programozása
Az OpenCV- t használó járművezetői álmosság-érzékelő teljes kódja az oldal végén található. A jobb megértés érdekében itt elmagyarázzuk a kód néhány fontos részét.
Tehát a szokásoknak megfelelően indítsa el a kódot az összes szükséges könyvtár beillesztésével.
import face_recognition import cv2 import numpy as np import time import cv2 import RPi.GPIO as GPIO import eye_game
Ezt követően hozzon létre egy példányt, hogy megszerezze a videoképet a pi kamerából. Ha egynél több kamerát használ, akkor cserélje le a nullát egyre a cv2- ben. VideoCapture (0) funkció.
video_capture = cv2.VideoCapture (0)
Most a következő sorokba írja be a fájl nevét és elérési útját. Esetemben a kód és a fájl is ugyanabban a mappában található. Ezután használja az arckódolásokat, hogy megkapja az arc helyét a képen.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Ezután hozzon létre két tömböt az arcok és neveik mentéséhez. Csak egy képet használok; további képeket és azok útját adhatja hozzá a kódhoz.
ismert_felület_kódolások = ismert_felület_nevek =
Ezután hozzon létre néhány változót az arcrészek helyeinek, arcneveinek és kódolásainak tárolásához.
face_locations = face_encodings = face_names = process_this_frame = True
A while funkción belül rögzítse a videó képkockákat a streamingből, és méretezze át a képeket kisebb méretre, és a rögzített keretet RGB színűvé alakítsa arcfelismerés céljából.
ret, frame = video_capture.read () small_frame = cv2.resize (frame, (0, 0), fx = 0,25, fy = 0,25) rgb_small_frame = small_frame
Ezt követően futtassa az arcfelismerési folyamatot, hogy összehasonlítsa a videóban szereplő arcokat a képpel. És megkapja az arcrészek helyét is.
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 (fájl, kis_keret)
Ha a felismert arc megegyezik a képen látható arccal, hívja meg a szemjáték funkciót a szemmozgások nyomon követésére. A kód ismételten követi a szem és a szemgolyó helyzetét.
face_distances = face_recognition.face_distance (ismert_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) ha megfelel: name = ismert_face_names direction = eye_game.get_eyeball_direction (fájl) print (irány)
Ha a kód 10 másodpercig nem észlel semmilyen szemmozgást, akkor a riasztást váltja ki az ember felébresztésére.
else: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Figyelmeztetés! ! Figyelmeztetés !! A sofőr álmosságát észleltük ")
Ezután az OpenCV függvényekkel rajzoljon téglalapot az arc köré, és tegyen rá szöveget. Ezenkívül mutassa meg a videokereteket a cv2.imshow funkcióval.
cv2.téglalap (keret, (bal, felső), (jobb, alsó), (0, 255, 0), 2) cv2.négyszög (keret, (bal, lent - 35), (jobb, lent), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (keret, név, (bal + 6, alsó - 6), betűtípus, 1.0, (0, 0, 255), 1) cv2.imshow ('Videó', keret) Állítsa be az 'S' kulcsot a kód leállításához. ha cv2.waitKey (1) & 0xFF == ord ('s'): törés
A járművezető álmosság-érzékelő rendszerének tesztelése
Miután elkészült a kód, csatlakoztassa a Pi kamerát és a hangjelzőt a Raspberry Pi-hez, és futtassa a kódot. Körülbelül 10 másodperc elteltével megjelenik egy ablak, amelyen a Raspberry Pi fényképezőgépe élőben közvetít. Amikor a készülék felismeri az arcot, kinyomtatja az Ön nevét a keretre, és elkezdi követni a szem mozgását. Most csukja be a szemét 7–8 másodpercre a riasztás teszteléséhez. Amikor a számlálás több lesz, mint 10, riasztást vált ki, és figyelmeztet a helyzetre.
Így készítheti el az Alvásérzékelőt az OpenCV és a Raspberry Pi használatával. Görgessen le a működő videóhoz és a kódhoz.