Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Λειτουργία FaceDetect
- Βήμα 2: Λειτουργία BackgroundRemove
- Βήμα 3: Λειτουργία VideoEdges
- Βήμα 4: Λειτουργία VideoBlur
- Βήμα 5: Βελτιώσεις
Βίντεο: OpenCV Basic Projects: 5 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Σε αυτό το έργο, διερευνούμε κάποιες βασικές λειτουργίες OpenCV μέσω 4 απλών έργων που περιλαμβάνουν ζωντανή ροή βίντεο. Πρόκειται για αναγνώριση προσώπου, αφαίρεση φόντου, ειδική οπτική απόδοση των άκρων και εφαρμογή εφέ θολώματος στη ζωντανή ροή βίντεο. Ο κύριος σκοπός μου για να δοκιμάσω αυτά τα έργα ήταν να βρέξω απλά τα πόδια μου με τη διεπαφή OpenCV, καθώς σκοπεύω να εμβαθύνω στο πεδίο της όρασης υπολογιστή
Προμήθειες
- Υπολογιστής που τρέχει Python
- Ανοιχτή βιβλιοθήκη βιογραφικού, Numpy βιβλιοθήκη, βιβλιοθήκη tkinter, βιβλιοθήκη sys
- Κάμερα για σύνδεση με υπολογιστή (εάν ο υπολογιστής δεν περιλαμβάνει ήδη μία)
- Το αρχείο python του προγράμματος (περιλαμβάνεται σε αυτό το εκπαιδευτικό)
- haarcascade xml αρχείο (περιλαμβάνεται σε αυτό το εκπαιδευτικό)
Βήμα 1: Λειτουργία FaceDetect
Αυτή η λειτουργία εμφανίζει το βίντεο της κάμεράς σας με πράσινα τετράγωνα σε όποια πρόσωπα σηκώνει. Στον κώδικα, χρησιμοποιούμε τη λειτουργία cv2. VideoCapture () για να αποθηκεύσουμε το βίντεο που καταγράφουμε σε ένα αντικείμενο με το όνομα "capture". Το CAPTURE_INDEX είναι ένας αριθμός που έχει οριστεί από τον υπολογιστή σας και αντιστοιχεί στο ευρετήριο της κάμεράς σας στη λίστα εισόδου βίντεο του υπολογιστή. Εάν δεν έχετε εξωτερική κάμερα συνδεδεμένη στον υπολογιστή σας, το 0 ή το 1 θα πρέπει να λειτουργήσει.
Το αντικείμενο face_cascade προετοιμάζεται χρησιμοποιώντας τη συνάρτηση cascadeClassifier και το αρχείο "haarcascade_frontalface_default.xml" που βρίσκεται στο github OpenCV. Χρησιμοποιούμε αυτό το αντικείμενο για να αποθηκεύσουμε τα πρόσωπα που εντοπίστηκαν στη λίστα "πρόσωπα" ως τετράπλευρη καταχώρηση που κρατά τις όψεις x συντεταγμένη, y συντεταγμένη, πλάτος και ύψος. Στη συνέχεια σχεδιάζουμε ένα ορθογώνιο που περικλείει τέλεια το πρόσωπο χρησιμοποιώντας τη συνάρτηση cv2.rectangle
Από αυτό το βίντεο, το OpenCV καταγράφει πολλές εικόνες στον βρόχο μας χρησιμοποιώντας το capture.read () και αποθηκεύοντας την εικόνα σε ένα πλαίσιο που ονομάσαμε "img". Στη συνέχεια, κάθε εικόνα ερμηνεύεται και τροποποιείται όπως επιθυμούμε. Για το faceDetect, κάνουμε την εικόνα γκρι χρησιμοποιώντας τη συνάρτηση cvtColor που μετατρέπει όποια εικόνα δίνεται στην πρώτη παράμετρο σε συγκεκριμένο τύπο χρώματος εικόνας που καθορίζεται στη δεύτερη παράμετρο. Η λίστα των αποδεκτών τιμών για τη δεύτερη παράμετρο μπορεί να βρεθεί στο διαδίκτυο. Στη συνέχεια, εμφανίζουμε την εικόνα σε ένα παράθυρο που ονομάζεται "Ανίχνευση του προσώπου" χρησιμοποιώντας τη λειτουργία imshow () που παίρνει μια συμβολοσειρά για το όνομα του παραθύρου και το πλαίσιο εικόνας που θα εμφανιστεί.
Τέλος, περιμένουμε να εισαγάγει ο χρήστης το κλειδί q χρησιμοποιώντας τη συνάρτηση cv2.waitKey (). Η μάσκα 0xFF χρησιμοποιείται ως σύμβαση για υπολογιστές 64 bit. Αφού ο χρήστης τερματίσει τη ροή βίντεο, η λειτουργία faceDetect απελευθερώνει το αντικείμενο λήψης και στη συνέχεια καταστρέφει τυχόν άλλα παράθυρα που ανοίγονται κάτω από τη διεπαφή OpenCV. Όλες οι άλλες λειτουργίες ακολουθούν παρόμοια δομή σχεδιασμού.
Βήμα 2: Λειτουργία BackgroundRemove
Αυτή η λειτουργία επιχειρεί να αφαιρέσει το τμήμα φόντου του βίντεο και να αφήσει μόνο την εικόνα στο προσκήνιο. Μπορεί να μην λειτουργεί σε ορισμένες κάμερες, καθώς χρησιμοποιούν μια λειτουργία ρύθμισης φωτισμού που ενεργοποιείται όταν διαφορετικά αντικείμενα/ εστίες εισέρχονται στο κάδρο. Εάν η λειτουργία backgroundRemove δεν λειτουργεί, μην ανησυχείτε- θα μπορούσε να είναι η φωτογραφική σας μηχανή!
Για να χρησιμοποιήσετε αυτήν τη λειτουργία, απομακρυνθείτε από το πλαίσιο της κάμερας και πατήστε το πλήκτρο "d" για να τραβήξετε την εικόνα φόντου. Είναι σημαντικό να μην υπάρχουν κινούμενα αντικείμενα στο παρασκήνιο που θέλετε να τραβήξετε. Στη συνέχεια, μπορούμε να επιστρέψουμε στο πλαίσιο της κάμερας. Εάν η λειτουργία λειτούργησε, ο χρήστης θα πρέπει να βλέπει μόνο τον εαυτό του στη ροή βίντεο της λειτουργίας. Οποιοσδήποτε θόρυβος/μαύρες κηλίδες στην εικόνα σε πρώτο πλάνο μπορεί να είναι αποτέλεσμα της ρύθμισης φωτισμού της κάμερας. Για να τραβήξετε ένα άλλο υπόβαθρο, πατήστε το πλήκτρο "r" για να εκκινήσετε εκ νέου και, στη συνέχεια, πατήστε ξανά το "d".
Μερικά βασικά βήματα για αυτήν τη συνάρτηση είναι η χρήση του boolean "σημαίας" που ανεβαίνει τη στιγμή που ο χρήστης πατάει το κουμπί d. Αυτό καταγράφει το φόντο και μας επιτρέπει να το αφαιρέσουμε από το βίντεο που μεταδίδεται σε ροή από τη λειτουργία. Στόχος μας είναι να αποθηκεύσουμε την εικόνα φόντου στο ref_img, ώστε να τη διακρίνουμε από την εικόνα προσκηνίου, η οποία καταγράφει οποιοδήποτε κινούμενο αντικείμενο. Χρησιμοποιούμε τη συνάρτηση cv2.subtract () για να αφαιρέσουμε την εικόνα του πρώτου εδάφους από την εικόνα φόντου και αντίστροφα, και στη συνέχεια να ακυρώσουμε τυχόν μικρές διαφορές στις δύο εικόνες αμέσως μετά. Το φόντο έχει μαυρίσει.
Η μάσκα fgmas γίνεται χρησιμοποιώντας τη διαφορά μεταξύ αυτών των δύο εικόνων και στη συνέχεια εφαρμόζεται στη ροή βίντεο συναρτήσεων χρησιμοποιώντας τη συνάρτηση OpenCV cv2.bitwise_and ().
Βήμα 3: Λειτουργία VideoEdges
Αυτή η λειτουργία επιστρέφει μια ζωντανή ροή βίντεο, αλλά οι ανιχνεύσιμες άκρες γίνονται λευκές ενώ όλα τα υπόλοιπα σβήνουν. Αυτό που διακρίνει αυτή τη λειτουργία από τις άλλες λειτουργίες είναι η μετατροπή του αρχικού μας βίντεο από μορφή RBG σε HSV, που σημαίνει απόχρωση, κορεσμός και παραλλαγή- μια διαφορετική μέθοδος επεξεργασίας φωτός και χρώματος από ένα βίντεο. Με αυτήν τη μέθοδο, μπορούμε πιο εύκολα να διακρίνουμε τα περιγράμματα στο βίντεο εφαρμόζοντας ένα φίλτρο (κόκκινο_ χαμηλό σε κόκκινο_ ύψος).
Το Canny Edge Detection χρησιμοποιείται για τον εντοπισμό των άκρων σε μια εικόνα. Δέχεται μια εικόνα γκρίζας κλίμακας ως είσοδο και χρησιμοποιεί έναν αλγόριθμο πολλαπλών σταδίων.
Βήμα 4: Λειτουργία VideoBlur
Αυτή η λειτουργία χρησιμοποιείται για να προσθέσει ένα εφέ θολώματος στη ροή βίντεο. Η απλή συνάρτηση καλεί τη συνάρτηση GaussianBlur cv2 στο πλαίσιο μας. Περισσότερες πληροφορίες για τη συνάρτηση gaussianBlur μπορείτε να βρείτε εδώ:
opencv-python-tutroals.readthedocs.io/en/l…
Βήμα 5: Βελτιώσεις
Η πιο ευαίσθητη λειτουργία σε αυτό το έργο είναι η λειτουργία αφαίρεσης φόντου, καθώς απαιτεί τη χρήση κάμερας που δεν διαθέτει λειτουργίες ρύθμισης φωτισμού. Ενδέχεται να υπάρχει ένα καλύτερο σύνολο λειτουργιών μέσα στη βιβλιοθήκη OpenCV που μπορεί να εξηγήσει αυτήν τη ρύθμιση φωτισμού και να αφαιρέσει ομαλά το φόντο (παρόμοιο με μια πράσινη οθόνη).
Θα μπορούσαμε επίσης να χρησιμοποιήσουμε άλλες λειτουργίες ανίχνευσης προσώπου που ενδέχεται να παράγουν αντικείμενα με περισσότερη λειτουργικότητα εκτός από την απλή επιστροφή συντεταγμένων (x, y). Perhapsσως ένα πρόγραμμα αναγνώρισης προσώπου με ικανότητα να θυμάται πρόσωπα δεν θα ήταν πολύ δύσκολο να εφαρμοστεί.
Η λειτουργία θολώματος μπορεί να προσαρμοστεί περισσότερο μέσω διαισθητικού ελέγχου από τον χρήστη. Για παράδειγμα, ο χρήστης μπορεί να θέλει να προσαρμόσει την ένταση του εφέ θολώματος ή να επιλέξει μια συγκεκριμένη περιοχή εντός του πλαισίου για να θολώσει.
Συνιστάται:
Φορητός υπολογιστής BASIC: 6 βήματα (με εικόνες)
Handheld BASIC Computer: Αυτό το Instructable περιγράφει τη διαδικασία κατασκευής ενός μικρού φορητού υπολογιστή με BASIC. Ο υπολογιστής είναι χτισμένος γύρω από το τσιπ ATmega 1284P AVR, το οποίο ενέπνευσε επίσης το ανόητο όνομα για τον υπολογιστή (HAL 1284). Αυτή η κατασκευή είναι ΒΑΒΙΑ εμπνευσμένη από το
Ρομπότ Telepresence: Basic Platform (Part 1): 23 βήματα (με εικόνες)
Ρομπότ Telepresence: Basic Platform (Μέρος 1): Ένα ρομπότ τηλεπαρουσίας είναι ένας τύπος ρομπότ που μπορεί να ελεγχθεί από απόσταση μέσω του Διαδικτύου και να λειτουργήσει ως υποκατάστατο για κάποιον κάπου αλλού. Για παράδειγμα, εάν βρίσκεστε στη Νέα Υόρκη, αλλά θέλετε να αλληλεπιδράσετε σωματικά με μια ομάδα ανθρώπων στην Καλιφόρνια
Προσθέστε Idler (2ο Άξονα Mounting Point) σε Micro Servos για Robotic Projects: 4 Βήματα
Προσθέστε Idler (2ο Άξονα Mounting Point) σε Micro Servos για Robotic Projects: Σε ανθρωποειδή ρομποτικά έργα, τα servos χρησιμοποιούνται σε αρθρώσεις για να μετακινήσετε διαφορετικά τμήματα του ρομπότ, τις περισσότερες φορές είναι καλύτερο να τοποθετείτε κάθε τμήμα σε 2 ή περισσότερα σημεία ο περιστρεφόμενος άξονας του σερβο για σταθερότητα και σωστή μεταφορά ροπής..Sma
Crazy Impressive Science/Engineering Projects: 10 Βήματα
Crazy Impressive Science/Engineering Projects: Θέλετε να έχετε το καλύτερο έργο επιστήμης/μηχανικής ποτέ; Συνέχισε να διαβάζεις
ADD Capacitive Touch Switch to Your Projects: 7 βήματα
ΠΡΟΣΘΗΚΗ Capacitive Touch Switch στα έργα σας: Πώς να προσθέσετε χωρητικό διακόπτη αφής στα έργα σας στο σπίτι Γεια σας, ηλεκτρονικοί φίλοι diy σε αυτό το σεμινάριο θα σας δείξω πώς μπορείτε να προσθέσετε έναν χωρητικό διακόπτη αφής στα ηλεκτρονικά σας έργα φθηνά και να δώσετε το δικό σας έργο DIY επαγγελματική εμφάνιση