- Απαιτούμενα στοιχεία
- Εγκατάσταση του OpenCV στο Raspberry Pi
- Εγκατάσταση άλλων απαιτούμενων πακέτων
- Προγραμματισμός του Raspberry Pi
- Δοκιμή του συστήματος ανίχνευσης υπνηλίας του προγράμματος οδήγησης
Οι οδηγοί φορτηγών που μεταφέρουν φορτίο και βαριά υλικά σε μεγάλες αποστάσεις κατά τη διάρκεια της ημέρας και της νύχτας, συχνά υποφέρουν από έλλειψη ύπνου. η κόπωση και η υπνηλία είναι μερικές από τις κύριες αιτίες μεγάλων ατυχημάτων στους αυτοκινητόδρομους. Οι αυτοκινητοβιομηχανίες εργάζονται σε ορισμένες τεχνολογίες που μπορούν να ανιχνεύσουν την υπνηλία και να ειδοποιήσουν τον οδηγό για αυτό.
Σε αυτό το έργο, πρόκειται να δημιουργήσουμε ένα σύστημα αίσθησης ύπνου και ειδοποίησης για προγράμματα οδήγησης που χρησιμοποιούν τη μονάδα κάμερας Raspberry Pi, OpenCV και Pi. Ο βασικός σκοπός αυτού του συστήματος είναι να παρακολουθεί την κατάσταση του προσώπου και τις κινήσεις των ματιών του οδηγού και εάν ο οδηγός αισθάνεται υπνηλία, τότε το σύστημα θα προκαλέσει ένα προειδοποιητικό μήνυμα. Αυτή είναι η επέκταση της προηγούμενης εφαρμογής εντοπισμού και αναγνώρισης προσώπου.
Απαιτούμενα στοιχεία
Εξαρτήματα υλικού
- Raspberry Pi 3
- Ενότητα κάμερας Pi
- Καλώδιο Micro USB
- Βομβητής
Λογισμικό και διαδικτυακές υπηρεσίες
- OpenCV
- Ντιμπλ
- 3. Πύθων
Πριν προχωρήσουμε σε αυτό το έργο ανίχνευσης υπνηλίας προγράμματος οδήγησης , πρώτα, πρέπει να εγκαταστήσουμε το OpenCV, το imutils, το dlib, το Numpy και μερικές άλλες εξαρτήσεις σε αυτό το έργο. Το OpenCV χρησιμοποιείται εδώ για ψηφιακή επεξεργασία εικόνας. Οι πιο συνηθισμένες εφαρμογές της Ψηφιακής Επεξεργασίας Εικόνας είναι η ανίχνευση αντικειμένων, η Αναγνώριση προσώπου και ο μετρητής.
Εδώ χρησιμοποιούμε μόνο Raspberry Pi, Pi Camera και έναν βομβητή για τη δημιουργία αυτού του συστήματος ανίχνευσης ύπνου.
Εγκατάσταση του OpenCV στο Raspberry Pi
Πριν εγκαταστήσετε το OpenCV και άλλες εξαρτήσεις, το Raspberry Pi πρέπει να ενημερωθεί πλήρως. Χρησιμοποιήστε τις παρακάτω εντολές για να ενημερώσετε το Raspberry Pi στην τελευταία του έκδοση:
sudo apt-get ενημέρωση
Στη συνέχεια, χρησιμοποιήστε τις ακόλουθες εντολές για να εγκαταστήσετε τις απαιτούμενες εξαρτήσεις για την εγκατάσταση του OpenCV στο 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
Τέλος, εγκαταστήστε το OpenCV στο Raspberry Pi χρησιμοποιώντας τις παρακάτω εντολές.
εγκατάσταση pip3 opencv-contrib-python == 4.1.0.25
Εάν είστε νέοι στο OpenCV, ελέγξτε τα προηγούμενα σεμινάρια OpenCV με το Raspberry pi:
- Εγκατάσταση του OpenCV στο Raspberry Pi χρησιμοποιώντας CMake
- Αναγνώριση προσώπου σε πραγματικό χρόνο με Raspberry Pi και OpenCV
- Αναγνώριση πινακίδας με χρήση Raspberry Pi και OpenCV
- Εκτίμηση μεγέθους πλήθους με χρήση OpenCV και Raspberry Pi
Έχουμε επίσης δημιουργήσει μια σειρά μαθημάτων OpenCV ξεκινώντας από το αρχικό επίπεδο.
Εγκατάσταση άλλων απαιτούμενων πακέτων
Πριν προγραμματίσετε το Raspberry Pi για ανιχνευτή υπνηλίας, ας εγκαταστήσουμε τα άλλα απαιτούμενα πακέτα.
Η εγκατάσταση του dlib: dlib είναι η σύγχρονη εργαλειοθήκη που περιέχει αλγόριθμους μηχανικής μάθησης και εργαλεία για πραγματικά προβλήματα. Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε το dlib.
pip3 εγκατάσταση dlib
Εγκατάσταση του NumPy: Το NumPy είναι η βασική βιβλιοθήκη για επιστημονικούς υπολογιστές που περιέχει ένα ισχυρό αντικείμενο διαστάσεων διαστάσεων, παρέχει εργαλεία για την ενσωμάτωση C, C ++ κ.λπ.
εγκατάσταση pip3 numpy
Εγκατάσταση λειτουργικής μονάδας face_recognition: Αυτή η βιβλιοθήκη χρησιμοποιείται για την αναγνώριση και τον χειρισμό προσώπων από την Python ή τη γραμμή εντολών. Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε τη βιβλιοθήκη αναγνώρισης προσώπου.
Pip3 εγκατάσταση face_recognition
Και στο τελευταίο, εγκαταστήστε τη βιβλιοθήκη eye_game χρησιμοποιώντας την παρακάτω εντολή:
pip3 εγκατάσταση μάτι-παιχνίδι
Προγραμματισμός του Raspberry Pi
Ο πλήρης κωδικός για το πρόγραμμα ανίχνευσης υπνηλίας οδηγού που χρησιμοποιεί το OpenCV δίνεται στο τέλος της σελίδας. Εδώ εξηγούμε ορισμένα σημαντικά μέρη του κώδικα για καλύτερη κατανόηση.
Έτσι, ως συνήθως, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας όλες τις απαιτούμενες βιβλιοθήκες.
εισαγωγή face_recognition εισαγωγή cv2 εισαγωγή numpy ως np εισαγωγή χρόνος εισαγωγή cv2 εισαγωγή RPi.GPIO ως GPIO εισαγωγή eye_game
Μετά από αυτό, δημιουργήστε μια παρουσία για να λάβετε τη ροή βίντεο από την κάμερα pi. Εάν χρησιμοποιείτε περισσότερες από μία κάμερες, αντικαταστήστε το μηδέν με μία στη λειτουργία cv2.VideoCapture (0) .
video_capture = cv2.VideoCapture (0)
Τώρα στις επόμενες γραμμές, εισαγάγετε το όνομα αρχείου και τη διαδρομή του αρχείου. Στην περίπτωσή μου, τόσο ο κωδικός όσο και το αρχείο βρίσκονται στον ίδιο φάκελο. Στη συνέχεια, χρησιμοποιήστε τις κωδικοποιήσεις προσώπου για να λάβετε τη θέση του προσώπου στην εικόνα.
img_image = face_recognition.load_image_file ("img.jpg") img_face_encoding = face_recognition.face_encodings (img_image)
Μετά από αυτό δημιουργήστε δύο πίνακες για να αποθηκεύσετε τα πρόσωπα και τα ονόματά τους. Χρησιμοποιώ μόνο μία εικόνα. μπορείτε να προσθέσετε περισσότερες εικόνες και τις διαδρομές τους στον κώδικα.
known_face_encodings = known_face_names =
Στη συνέχεια, δημιουργήστε μερικές μεταβλητές για να αποθηκεύσετε τις θέσεις των μερών προσώπου, τα ονόματα προσώπων και τις κωδικοποιήσεις.
face_locations = face_encodings = face_names = process_this_frame = True
Μέσα στη λειτουργία while , τραβήξτε τα καρέ βίντεο από τη ροή και αλλάξτε το μέγεθος των καρέ σε μικρότερο μέγεθος και επίσης μετατρέψτε το καταγεγραμμένο πλαίσιο σε χρώμα RGB για αναγνώριση προσώπου.
ret, frame = video_capture.read () small_frame = cv2. resize (frame, (0, 0), fx = 0.25, fy = 0.25) rgb_small_frame = small_frame
Μετά από αυτό, εκτελέστε τη διαδικασία αναγνώρισης προσώπου για να συγκρίνετε τα πρόσωπα στο βίντεο με την εικόνα. Και λάβετε επίσης τις θέσεις των μερών προσώπου.
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 (αρχείο, μικρό_πλαίσιο)
Εάν το αναγνωρισμένο πρόσωπο ταιριάζει με το πρόσωπο στην εικόνα, καλέστε τη λειτουργία παιχνιδιού για να παρακολουθείτε τις κινήσεις των ματιών. Ο κωδικός θα παρακολουθεί επανειλημμένα τη θέση του ματιού και του βολβού.
face_distances = face_recognition.face_distance (known_face_encodings, face_encoding) best_match_index = np.argmin (face_distances) εάν ταιριάζει: name = known_face_names direction = eye_game.get_eyeball_direction (αρχείο) εκτύπωση (κατεύθυνση)
Εάν ο κωδικός δεν ανιχνεύσει καμία κίνηση των ματιών για 10 δευτερόλεπτα, τότε θα ενεργοποιήσει τον συναγερμό για να ξυπνήσει το άτομο.
αλλιώς: count = 1 + count print (count) if (count> = 10): GPIO.output (BUZZER, GPIO.HIGH) time.sleep (2) GPIO.output (BUZZER, GPIO.LOW) εκτύπωση ("Ειδοποίηση! ! Ειδοποίηση !! Εντοπίστηκε υπνηλία οδηγού ")
Στη συνέχεια, χρησιμοποιήστε τις λειτουργίες OpenCV για να σχεδιάσετε ένα ορθογώνιο γύρω από το πρόσωπο και να βάλετε ένα κείμενο σε αυτό. Επίσης, εμφανίστε τα καρέ βίντεο χρησιμοποιώντας τη συνάρτηση cv2.imshow .
cv2. ορθογώνιο (πλαίσιο, (αριστερά, πάνω), (δεξιά, κάτω), (0, 255, 0), 2) cv2. ορθογώνιο (πλαίσιο, (αριστερά, κάτω - 35), (δεξιά, κάτω), (0, 255, 0), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText (πλαίσιο, όνομα, (αριστερά + 6, κάτω - 6), γραμματοσειρά, 1.0, (0, 0, 255), 1) cv2.imshow ('Βίντεο', καρέ) Ρυθμίστε το πλήκτρο 'S' για να σταματήσετε τον κωδικό. εάν cv2.waitKey (1) & 0xFF == ord ('s'): διακοπή
Δοκιμή του συστήματος ανίχνευσης υπνηλίας του προγράμματος οδήγησης
Μόλις ο κωδικός είναι έτοιμος, συνδέστε την κάμερα Pi και το βομβητή στο Raspberry Pi και εκτελέστε τον κωδικό. Μετά από περίπου 10 δευτερόλεπτα, θα εμφανιστεί ένα παράθυρο με τη ζωντανή ροή από την κάμερα Raspberry Pi. Όταν η συσκευή αναγνωρίσει το πρόσωπο, θα εκτυπώσει το όνομά σας στο πλαίσιο και θα αρχίσει να παρακολουθεί την κίνηση των ματιών. Τώρα κλείστε τα μάτια σας για 7 έως 8 δευτερόλεπτα για να ελέγξετε τον συναγερμό. Όταν η μέτρηση γίνει μεγαλύτερη από 10, θα ενεργοποιηθεί ένας συναγερμός, που θα σας ειδοποιεί για την κατάσταση.
Έτσι μπορείτε να δημιουργήσετε τον ανιχνευτή υπνηλίας χρησιμοποιώντας τα OpenCV και Raspberry Pi. Κάντε κύλιση προς τα κάτω για να δείτε το βίντεο και τον Κώδικα