- Gerekli Bileşenler
- OpenCV'yi Raspberry Pi'ye Yükleme
- Diğer Gerekli Paketleri Yükleme
- Raspberry Pi'yi Programlama
- Sürücü Uyuşukluk Algılama Sisteminin Test Edilmesi
Gündüz ve gece boyunca kargo ve ağır malzemeleri uzun mesafelerde taşıyan kamyon sürücüleri, genellikle uykusuzluk çekerler. Karayollarında meydana gelen büyük kazaların önde gelen nedenlerinden bazıları yorgunluk ve uyuşukluktur. Otomobil endüstrisi, uyuşukluğu tespit edebilen ve sürücüyü bu konuda uyarabilen bazı teknolojiler üzerinde çalışıyor.
Bu projede Raspberry Pi, OpenCV ve Pi kamera modülünü kullanarak Sürücüler için Uyku Algılama ve Uyarı Sistemi kuracağız. Bu sistemin temel amacı, sürücünün yüz durumunu ve göz hareketlerini takip etmektir ve sürücü uykulu hissediyorsa, sistem bir uyarı mesajı verecektir. Bu, önceki yüz işareti algılama ve Yüz tanıma uygulamamızın uzantısıdır.
Gerekli Bileşenler
Donanım bileşenleri
- Ahududu Pi 3
- Pi Kamera Modülü
- Mikro USB Kablosu
- Buzzer
Yazılım ve Çevrimiçi Hizmetler
- OpenCV
- Dlib
- Python3
Bu geçmeden önce sürücü uyuşukluk algılama projesi , öncelikle, biz bu projede OpenCV, imutils, dlib, Numpy ve bazı diğer bağımlılıklar yüklemeniz gerekir. OpenCV, burada dijital görüntü işleme için kullanılır. Dijital Görüntü İşlemenin en yaygın uygulamaları nesne algılama, Yüz Tanıma ve insan sayacıdır.
Burada bu Uyku algılama sistemini oluşturmak için sadece Raspberry Pi, Pi Kamera ve bir zil kullanıyoruz.
OpenCV'yi Raspberry Pi'ye Yükleme
OpenCV ve diğer bağımlılıkları kurmadan önce, Raspberry Pi'nin tamamen güncellenmesi gerekir. Raspberry Pi'yi en son sürümüne güncellemek için aşağıdaki komutları kullanın:
sudo apt-get güncellemesi
Ardından, OpenCV'yi Raspberry Pi'nize yüklemek için gerekli bağımlılıkları yüklemek için aşağıdaki komutları kullanın.
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-testi -y
Son olarak, aşağıdaki komutları kullanarak OpenCV'yi Raspberry Pi'ye kurun.
pip3 kurulum opencv-katkıda-python == 4.1.0.25
OpenCV'de yeniyseniz, Raspberry pi ile önceki OpenCV öğreticilerimize bakın:
- OpenCV'yi CMake kullanarak Raspberry Pi'ye yükleme
- Raspberry Pi ve OpenCV ile Gerçek Zamanlı Yüz Tanıma
- Raspberry Pi ve OpenCV kullanarak Plaka Tanıma
- OpenCV ve Raspberry Pi Kullanarak Kalabalık Boyutu Tahmini
Başlangıç seviyesinden başlayarak bir dizi OpenCV öğreticisi de oluşturduk.
Diğer Gerekli Paketleri Yükleme
Ahududu Pi Uyuşukluk Dedektörü için programlamadan önce diğer gerekli paketleri kuralım.
Dlib kurulumu: dlib, gerçek dünya sorunları için Makine Öğrenimi algoritmaları ve araçları içeren modern bir araç setidir. Dlib'i kurmak için aşağıdaki komutu kullanın.
pip3 kurulum dlib
NumPy'yi Kurmak: NumPy, güçlü bir n boyutlu dizi nesnesi içeren, C, C ++ vb. Entegre etmek için araçlar sağlayan bilimsel hesaplama için temel kitaplıktır.
pip3 numpy yükle
Face_recognition modülünü kurma: Bu kitaplık, yüzleri Python'dan veya komut satırından tanımak ve işlemek için kullanılır. Yüz tanıma kitaplığını kurmak için aşağıdaki komutu kullanın.
Pip3 face_recognition yükleyin
Ve son olarak, aşağıdaki komutu kullanarak eye_game kitaplığını kurun:
pip3 göz oyunu yükleyin
Raspberry Pi'yi Programlama
OpenCV Kullanan Sürücü Uyuşukluk Dedektörü için tam kod sayfanın sonunda verilmiştir. Burada daha iyi anlaşılması için kodun bazı önemli kısımlarını açıklıyoruz.
Bu nedenle, her zamanki gibi, gerekli tüm kitaplıkları ekleyerek kodu başlatın.
face_recognition içe aktar cv2 içe aktar np olarak içe aktarım zamanı içe aktar cv2 içe aktar RPi.GPIO'yu GPIO olarak içe aktar eye_game
Bundan sonra, video beslemesini pi kameradan almak için bir örnek oluşturun. Birden fazla kamera kullanıyorsanız cv2.VideoCapture (0) işlevinde sıfırı bir ile değiştirin.
video_capture = cv2.VideoCapture (0)
Şimdi sonraki satırlarda dosyanın adını ve yolunu girin. Benim durumumda, hem kod hem de dosya aynı klasörde. Ardından, resimdeki yüz konumunu elde etmek için yüz kodlamalarını kullanın.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Bundan sonra yüzleri ve isimlerini kaydetmek için iki dizi oluşturun. Yalnızca bir resim kullanıyorum; koda daha fazla görüntü ve bunların yollarını ekleyebilirsiniz.
bilinen_yüz_ kodlamalar = bilinen_yüz_adları =
Ardından, yüz bölümleri konumlarını, yüz adlarını ve kodlamaları depolamak için bazı değişkenler oluşturun.
face_locations = face_encodings = face_names = process_this_frame = True
İçinde ise fonksiyonu akışı video kareleri yakalamak ve daha küçük boyuta kareleri yeniden boyutlandırmak ve aynı zamanda yüz tanıma için RGB renk yakalanan çerçeveyi dönüştürmek.
ret, frame = video_capture.read () small_frame = cv2.resize (frame, (0, 0), fx = 0.25, fy = 0.25) rgb_small_frame = small_frame
Bundan sonra, videodaki yüzleri görüntü ile karşılaştırmak için yüz tanıma işlemini çalıştırın. Ayrıca yüz parçalarının yerlerini de alın.
process_this_frame ise: face_locations = face_recognition.face_locations (rgb_small_frame) face_encodings = face_recognition.face_encodings (rgb_small_frame, face_locations) cv2.imwrite (dosya, small_frame)
Tanınan yüz görüntüdeki yüzle eşleşirse , göz hareketlerini izlemek için göz oyunu işlevini çağırın. Kod, göz ve göz küresinin konumunu tekrar tekrar izleyecektir.
face_distances = face_recognition.face_distance (bilinen_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) eşleşirse: ad = bilinen_face_names yön = eye_game.get_eyeball_direction (dosya) yazdırma (yön)
Kod 10 saniye boyunca herhangi bir göz hareketi algılamazsa, kişiyi uyandırmak için alarmı tetikleyecektir.
else: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) print ("Alert! ! Uyarı !! Sürücü Uyuşukluğu Algılandı ")
Ardından, yüzün etrafına bir dikdörtgen çizmek ve üzerine bir metin koymak için OpenCV işlevlerini kullanın. Ayrıca, cv2.imshow işlevini kullanarak video karelerini gösterin.
cv2.rectangle (çerçeve, (sol, üst), (sağ, alt), (0, 255, 0), 2) cv2.rectangle (çerçeve, (sol, alt - 35), (sağ, alt), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (çerçeve, isim, (sol + 6, alt - 6), yazı tipi, 1.0, (0, 0, 255), 1) cv2.imshow ('Video', çerçeve) Kodu durdurmak için 'S' Anahtarını ayarlayın. eğer cv2.waitKey (1) & 0xFF == ord ('s'): break
Sürücü Uyuşukluk Algılama Sisteminin Test Edilmesi
Kod hazır olduğunda, Pi kamerasını ve zilini Raspberry Pi'ye bağlayın ve kodu çalıştırın. Yaklaşık 10 saniye sonra, Raspberry Pi kameranızdan canlı akışı gösteren bir pencere görünecektir. Cihaz yüzü tanıdığında adınızı çerçeveye yazdıracak ve göz hareketini izlemeye başlayacaktır. Şimdi alarmı test etmek için gözlerinizi 7 ila 8 saniye kapatın. Sayım 10'dan fazla olduğunda, sizi durum hakkında uyaran bir alarmı tetikleyecektir.
Bu inşa edebilirsiniz nasıl OpenCV ve Ahududu Pi kullanarak Uyuşukluk Dedektör. Çalışan video ve Kod için aşağı kaydırın.