Πίνακας περιεχομένων:

OpenCV Basic Projects: 5 Βήματα
OpenCV Basic Projects: 5 Βήματα

Βίντεο: OpenCV Basic Projects: 5 Βήματα

Βίντεο: OpenCV Basic Projects: 5 Βήματα
Βίντεο: 5 βήματα για να μάθω Forehand από το 0 | The Tennis Project | Μάθημα τένις 2024, Νοέμβριος
Anonim
Βασικά έργα OpenCV
Βασικά έργα OpenCV

Σε αυτό το έργο, διερευνούμε κάποιες βασικές λειτουργίες OpenCV μέσω 4 απλών έργων που περιλαμβάνουν ζωντανή ροή βίντεο. Πρόκειται για αναγνώριση προσώπου, αφαίρεση φόντου, ειδική οπτική απόδοση των άκρων και εφαρμογή εφέ θολώματος στη ζωντανή ροή βίντεο. Ο κύριος σκοπός μου για να δοκιμάσω αυτά τα έργα ήταν να βρέξω απλά τα πόδια μου με τη διεπαφή OpenCV, καθώς σκοπεύω να εμβαθύνω στο πεδίο της όρασης υπολογιστή

Προμήθειες

  • Υπολογιστής που τρέχει Python
  • Ανοιχτή βιβλιοθήκη βιογραφικού, Numpy βιβλιοθήκη, βιβλιοθήκη tkinter, βιβλιοθήκη sys
  • Κάμερα για σύνδεση με υπολογιστή (εάν ο υπολογιστής δεν περιλαμβάνει ήδη μία)
  • Το αρχείο python του προγράμματος (περιλαμβάνεται σε αυτό το εκπαιδευτικό)
  • haarcascade xml αρχείο (περιλαμβάνεται σε αυτό το εκπαιδευτικό)

Βήμα 1: Λειτουργία FaceDetect

Λειτουργία FaceDetect
Λειτουργία FaceDetect
Λειτουργία FaceDetect
Λειτουργία 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
Λειτουργία BackgroundRemove
Λειτουργία BackgroundRemove
Λειτουργία BackgroundRemove

Αυτή η λειτουργία επιχειρεί να αφαιρέσει το τμήμα φόντου του βίντεο και να αφήσει μόνο την εικόνα στο προσκήνιο. Μπορεί να μην λειτουργεί σε ορισμένες κάμερες, καθώς χρησιμοποιούν μια λειτουργία ρύθμισης φωτισμού που ενεργοποιείται όταν διαφορετικά αντικείμενα/ εστίες εισέρχονται στο κάδρο. Εάν η λειτουργία backgroundRemove δεν λειτουργεί, μην ανησυχείτε- θα μπορούσε να είναι η φωτογραφική σας μηχανή!

Για να χρησιμοποιήσετε αυτήν τη λειτουργία, απομακρυνθείτε από το πλαίσιο της κάμερας και πατήστε το πλήκτρο "d" για να τραβήξετε την εικόνα φόντου. Είναι σημαντικό να μην υπάρχουν κινούμενα αντικείμενα στο παρασκήνιο που θέλετε να τραβήξετε. Στη συνέχεια, μπορούμε να επιστρέψουμε στο πλαίσιο της κάμερας. Εάν η λειτουργία λειτούργησε, ο χρήστης θα πρέπει να βλέπει μόνο τον εαυτό του στη ροή βίντεο της λειτουργίας. Οποιοσδήποτε θόρυβος/μαύρες κηλίδες στην εικόνα σε πρώτο πλάνο μπορεί να είναι αποτέλεσμα της ρύθμισης φωτισμού της κάμερας. Για να τραβήξετε ένα άλλο υπόβαθρο, πατήστε το πλήκτρο "r" για να εκκινήσετε εκ νέου και, στη συνέχεια, πατήστε ξανά το "d".

Μερικά βασικά βήματα για αυτήν τη συνάρτηση είναι η χρήση του boolean "σημαίας" που ανεβαίνει τη στιγμή που ο χρήστης πατάει το κουμπί d. Αυτό καταγράφει το φόντο και μας επιτρέπει να το αφαιρέσουμε από το βίντεο που μεταδίδεται σε ροή από τη λειτουργία. Στόχος μας είναι να αποθηκεύσουμε την εικόνα φόντου στο ref_img, ώστε να τη διακρίνουμε από την εικόνα προσκηνίου, η οποία καταγράφει οποιοδήποτε κινούμενο αντικείμενο. Χρησιμοποιούμε τη συνάρτηση cv2.subtract () για να αφαιρέσουμε την εικόνα του πρώτου εδάφους από την εικόνα φόντου και αντίστροφα, και στη συνέχεια να ακυρώσουμε τυχόν μικρές διαφορές στις δύο εικόνες αμέσως μετά. Το φόντο έχει μαυρίσει.

Η μάσκα fgmas γίνεται χρησιμοποιώντας τη διαφορά μεταξύ αυτών των δύο εικόνων και στη συνέχεια εφαρμόζεται στη ροή βίντεο συναρτήσεων χρησιμοποιώντας τη συνάρτηση OpenCV cv2.bitwise_and ().

Βήμα 3: Λειτουργία VideoEdges

Λειτουργία VideoEdges
Λειτουργία VideoEdges
Λειτουργία VideoEdges
Λειτουργία VideoEdges

Αυτή η λειτουργία επιστρέφει μια ζωντανή ροή βίντεο, αλλά οι ανιχνεύσιμες άκρες γίνονται λευκές ενώ όλα τα υπόλοιπα σβήνουν. Αυτό που διακρίνει αυτή τη λειτουργία από τις άλλες λειτουργίες είναι η μετατροπή του αρχικού μας βίντεο από μορφή RBG σε HSV, που σημαίνει απόχρωση, κορεσμός και παραλλαγή- μια διαφορετική μέθοδος επεξεργασίας φωτός και χρώματος από ένα βίντεο. Με αυτήν τη μέθοδο, μπορούμε πιο εύκολα να διακρίνουμε τα περιγράμματα στο βίντεο εφαρμόζοντας ένα φίλτρο (κόκκινο_ χαμηλό σε κόκκινο_ ύψος).

Το Canny Edge Detection χρησιμοποιείται για τον εντοπισμό των άκρων σε μια εικόνα. Δέχεται μια εικόνα γκρίζας κλίμακας ως είσοδο και χρησιμοποιεί έναν αλγόριθμο πολλαπλών σταδίων.

Βήμα 4: Λειτουργία VideoBlur

Λειτουργία VideoBlur
Λειτουργία VideoBlur
Λειτουργία VideoBlur
Λειτουργία VideoBlur

Αυτή η λειτουργία χρησιμοποιείται για να προσθέσει ένα εφέ θολώματος στη ροή βίντεο. Η απλή συνάρτηση καλεί τη συνάρτηση GaussianBlur cv2 στο πλαίσιο μας. Περισσότερες πληροφορίες για τη συνάρτηση gaussianBlur μπορείτε να βρείτε εδώ:

opencv-python-tutroals.readthedocs.io/en/l…

Βήμα 5: Βελτιώσεις

Η πιο ευαίσθητη λειτουργία σε αυτό το έργο είναι η λειτουργία αφαίρεσης φόντου, καθώς απαιτεί τη χρήση κάμερας που δεν διαθέτει λειτουργίες ρύθμισης φωτισμού. Ενδέχεται να υπάρχει ένα καλύτερο σύνολο λειτουργιών μέσα στη βιβλιοθήκη OpenCV που μπορεί να εξηγήσει αυτήν τη ρύθμιση φωτισμού και να αφαιρέσει ομαλά το φόντο (παρόμοιο με μια πράσινη οθόνη).

Θα μπορούσαμε επίσης να χρησιμοποιήσουμε άλλες λειτουργίες ανίχνευσης προσώπου που ενδέχεται να παράγουν αντικείμενα με περισσότερη λειτουργικότητα εκτός από την απλή επιστροφή συντεταγμένων (x, y). Perhapsσως ένα πρόγραμμα αναγνώρισης προσώπου με ικανότητα να θυμάται πρόσωπα δεν θα ήταν πολύ δύσκολο να εφαρμοστεί.

Η λειτουργία θολώματος μπορεί να προσαρμοστεί περισσότερο μέσω διαισθητικού ελέγχου από τον χρήστη. Για παράδειγμα, ο χρήστης μπορεί να θέλει να προσαρμόσει την ένταση του εφέ θολώματος ή να επιλέξει μια συγκεκριμένη περιοχή εντός του πλαισίου για να θολώσει.

Συνιστάται: