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

Απλή ανίχνευση χρώματος χρησιμοποιώντας OpenCV: 6 βήματα
Απλή ανίχνευση χρώματος χρησιμοποιώντας OpenCV: 6 βήματα

Βίντεο: Απλή ανίχνευση χρώματος χρησιμοποιώντας OpenCV: 6 βήματα

Βίντεο: Απλή ανίχνευση χρώματος χρησιμοποιώντας OpenCV: 6 βήματα
Βίντεο: Niagara bullet hell game How to UE4 | Niagara collision projectile 2024, Νοέμβριος
Anonim
Απλή ανίχνευση χρωμάτων χρησιμοποιώντας OpenCV
Απλή ανίχνευση χρωμάτων χρησιμοποιώντας OpenCV

Γεια! Σήμερα θα δείξω μια απλή μέθοδο ανίχνευσης χρώματος από ένα ζωντανό βίντεο χρησιμοποιώντας OpenCV και python.

Βασικά θα δοκιμάσω απλώς το απαιτούμενο χρώμα που υπάρχει στο πλαίσιο του φόντου ή όχι και χρησιμοποιώντας τις ενότητες OpenCV θα καλύψω αυτήν την περιοχή και ταυτόχρονα θα εμφανίσω το πλαίσιο.

Βήμα 1: Τα αρχεία κεφαλίδας

Τα αρχεία κεφαλίδας
Τα αρχεία κεφαλίδας

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

Και το Numpy είναι μια βιβλιοθήκη python που είναι απαραίτητη για την αποθήκευση ενός πολυδιάστατου πίνακα. Θα χρησιμοποιήσουμε για να αποθηκεύσουμε τις συντεταγμένες χρωμάτων μας.

Και το numpy as np βασικά βοηθά τον κώδικα μας να συντομευτεί κάπως χρησιμοποιώντας το np κάθε φορά αντί για numpy.

Βήμα 2: Λήψη βίντεο

Λήψη βίντεο
Λήψη βίντεο

Αυτό είναι αρκετά απλό κατά τη χρήση python. Εδώ πρέπει απλώς να ενεργοποιήσουμε τη συσκευή εγγραφής βίντεο έτσι ώστε να μπορεί να ξεκινήσει την εγγραφή των καρέ.

Τώρα η τιμή μέσα στο VideoCapture υποδεικνύει την κάμερα, στην περίπτωσή μου η κάμερα είναι συνδεδεμένη στο φορητό υπολογιστή μου, άρα 0.

Μπορείτε να πάτε παρόμοια με το 1 για τη δευτερεύουσα κάμερα και ούτω καθεξής. Το VideoCapture δημιουργεί το αντικείμενο για αυτό.

Βήμα 3: Λήψη πλαισίου και καθορισμός χρώματος

Λήψη πλαισίου και καθορισμός χρώματος
Λήψη πλαισίου και καθορισμός χρώματος

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

Ο βρόχος "while" θα μας βοηθήσει να εκτελέσουμε τον βρόχο στον χρόνο απαίτησής μας. Τώρα το "_, frame = cap.read ()" χρησιμοποιείται για τον έλεγχο της εγκυρότητας του πλαισίου που έχει καταγραφεί και το αποθηκεύει. «Cap.read () είναι μια boolean μεταβλητή και επιστρέφει true αν το πλαίσιο διαβάζεται σωστά και αν έχετε κανένα καρέ δεν θα δείξει κανένα λάθος, θα πάρετε απλά Καμία.

Τώρα η γραμμή 11 και η γραμμή 12 καθορίζουν βασικά το εύρος του χρώματος που πρέπει να ανιχνεύσουμε. Για αυτό, έχω συνηθίσει το μπλε χρώμα.

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

Για αυτό, έχω ορίσει δύο μεταβλητές που αποθηκεύουν τις χαμηλότερες τιμές BGR και τις ανώτερες τιμές BGR.

Βήμα 4: Κάλυψη και εξαγωγή

Κάλυψη και εξαγωγή
Κάλυψη και εξαγωγή

Τώρα εδώ έρχεται το κύριο καθήκον της κάλυψης του πλαισίου και της εξαγωγής του χρώματος του πλαισίου. Χρησιμοποίησα τις προκαθορισμένες εντολές που υπάρχουν στη βιβλιοθήκη στο OpenCV για να κάνω την κάλυψη. Βασικά η κάλυψη είναι η διαδικασία αφαίρεσης κάποιου μέρους του πλαισίου, δηλαδή θα αφαιρέσουμε τα εικονοστοιχεία των οποίων οι τιμές των τιμών BGR που δεν βρίσκονται στο καθορισμένο εύρος χρωμάτων και αυτό γίνεται με το cv2.inRange. Στη συνέχεια, εφαρμόζουμε το εύρος χρωμάτων στη μάσκα εικόνας ανάλογα με τις τιμές των εικονοστοιχείων και για αυτό, θα χρησιμοποιήσουμε cv2.bitwise_and, Απλώς θα εκχωρήσει τα χρώματα στην περιοχή της μάσκας ανάλογα με τις τιμές μάσκας και εύρους χρώματος.

Σύνδεσμος για cv2. bitwise_and:

Βήμα 5: Επιτέλους εμφάνιση

Επιτέλους Προβολή!
Επιτέλους Προβολή!

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

Τώρα πρέπει να βγούμε από τον βρόχο while. Για αυτό, μπορούμε απλά να εφαρμόσουμε το cv2.wait. Key (). Βασικά λέει τον χρόνο αναμονής πριν απαντήσετε. Έτσι, αν περάσετε το 0 θα περιμένει άπειρα και το 0xFF λέει ότι η αρχιτεκτονική είναι 64bit. «Ord ()» διευκρινίζει ο χαρακτήρας ότι όταν πατηθεί θα εκτελέσει την εντολή διάλειμμα στην περίπτωση μπλοκ και θα βγει από το βρόχο.

Στη συνέχεια, το cap.release () κλείνει τη συσκευή εγγραφής βίντεο και το cv2.destroyAllWindows () κλείνει όλα τα ανοιχτά παράθυρα.

Εάν έχετε οποιοδήποτε πρόβλημα, ενημερώστε με.

Σύνδεσμος προς πηγαίο κώδικα:

Συνιστάται: