Πίνακας περιεχομένων:
- Βήμα 1: Εγκαταστήστε το Anaconda
- Βήμα 2: Κατεβάστε το Open CV Package
- Βήμα 3: Ορίστε περιβαλλοντικές μεταβλητές
- Βήμα 4: Δοκιμή για επιβεβαίωση
- Βήμα 5: Δημιουργήστε κώδικα για την ανίχνευση προσώπου
- Βήμα 6: Δημιουργήστε κώδικα για τη δημιουργία συνόλου δεδομένων
- Βήμα 7: Δημιουργήστε κώδικα για να εκπαιδεύσετε τον αναγνωριστή
- Βήμα 8: Δημιουργήστε κώδικα για την αναγνώριση των προσώπων και του αποτελέσματος
Βίντεο: Ανίχνευση προσώπου+αναγνώριση: 8 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Αυτό είναι ένα απλό παράδειγμα εκτέλεσης ανίχνευσης και αναγνώρισης προσώπου με OpenCV από κάμερα. ΣΗΜΕΙΩΣΗ: ΕΧΩ ΚΑΝΕΙ ΑΥΤΟ ΤΟ ΕΡΓΟ ΓΙΑ ΑΙΣΘΗΤΗΡΙΚΟ ΔΙΑΓΩΝΙΣΜΟ ΚΑΙ ΧΡΗΣΙΜΟΠΟΙΗΣΑΤΕ ΤΗΝ ΚΑΜΕΡΑ ΣΑΝ ΑΙΣΘΗΤΗΡΙΑ ΣΤΗΝ ΙΣΧΥΣ ΚΑΙ ΤΗΝ ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΣΩΠΩΝ. Λοιπόν, ο στόχος μαςΣε αυτήν τη συνεδρία, 1. Εγκαταστήστε το Anaconda 2. Κατεβάστε το Open CV Package 3. Ορίστε περιβαλλοντικές μεταβλητές 4. Δοκιμή για επιβεβαίωση 5 Δημιουργία κωδικού για ανίχνευση προσώπου 6. Δημιουργία κώδικα για τη δημιουργία συνόλου δεδομένων 7. Δημιουργία κώδικα για εκπαίδευση του αναγνωριστή 8. Δημιουργία κώδικα για αναγνώριση των προσώπων & Αποτέλεσμα.
Βήμα 1: Εγκαταστήστε το Anaconda
Το Anaconda είναι ουσιαστικά ένα όμορφα συσκευασμένο Python IDE που αποστέλλεται με τόνους χρήσιμων πακέτων, όπως NumPy, Pandas, IPython Notebook κλπ. Φαίνεται ότι συνιστάται παντού στην επιστημονική κοινότητα. Ρίξτε μια ματιά στο Anaconda για να το εγκαταστήσετε.
Βήμα 2: Κατεβάστε το Open CV Package
Πρώτον, μεταβείτε στον επίσημο ιστότοπο OpenCV για να κάνετε λήψη του πλήρους πακέτου OpenCV. Επιλέξτε μια έκδοση που σας αρέσει (2.x ή 3.x). Είμαι σε Python 2.x και OpenCV 2.x - κυρίως επειδή έτσι ρυθμίζονται/βασίζονται τα σεμινάρια OpenCV -Python.
Στην περίπτωσή μου, έχω εξαγάγει το πακέτο (ουσιαστικά ένα φάκελο) κατευθείαν στη μονάδα F μου. (F: / opencv).
Βήμα 3: Ορίστε περιβαλλοντικές μεταβλητές
Αντιγράψτε και επικολλήστε το αρχείο cv2.pyd
Ο κατάλογος πακέτων τοποθεσιών Anaconda (π.χ. F: / Program Files / Anaconda2 / Lib / site-packages στην περίπτωσή μου) περιέχει τα πακέτα Python που μπορείτε να εισαγάγετε. Ο στόχος μας είναι να αντιγράψουμε και να επικολλήσουμε το αρχείο cv2.pyd σε αυτόν τον κατάλογο (έτσι ώστε να μπορούμε να χρησιμοποιήσουμε το cv2 εισαγωγής στους κώδικες Python.).
Για να το κάνετε αυτό, αντιγράψτε το αρχείο cv2.pyd…
Από αυτόν τον κατάλογο OpenCV (το αρχικό μέρος μπορεί να είναι ελαφρώς διαφορετικό στο μηχάνημά σας):
# Μηχανή Python 2.7 και 64-bit: F: / opencv / build / python / 2.7 / x64# Python 2.7 και μηχανή 32-bit: F: / opencv / build / python / 2.7 / x84
Σε αυτόν τον κατάλογο Anaconda (το αρχικό μέρος μπορεί να είναι ελαφρώς διαφορετικό στο μηχάνημά σας):
F: / Program Files / Anaconda2 / Lib / site-packages
Μετά την εκτέλεση αυτού του βήματος, θα μπορούμε τώρα να χρησιμοποιούμε εισαγωγή cv2 σε κώδικα Python. ΑΛΛΑ, πρέπει ακόμη να κάνουμε λίγη περισσότερη δουλειά για να λειτουργήσει ο FFMPEG (κωδικοποιητής βίντεο) (για να μπορέσουμε να κάνουμε πράγματα όπως η επεξεργασία βίντεο.)
Κάντε δεξί κλικ στο "My Computer" (ή "Αυτός ο υπολογιστής" στα Windows 8.1)-> αριστερό κλικ στις ιδιότητες-> αριστερό κλικ στην καρτέλα "Advanced"-> αριστερό κλικ στο κουμπί "Μεταβλητές περιβάλλοντος …". Προσθέστε μια νέα μεταβλητή χρήστη για να δείξει το OpenCV (είτε x86 για σύστημα 32-bit είτε x64 για σύστημα 64-bit.) Αυτή τη στιγμή χρησιμοποιώ ένα μηχάνημα 64-bit.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
Προσθέστε %OPENCV_DIR %\ bin στο User Variable PATH.
Για παράδειγμα, η μεταβλητή χρήστη PATH μου μοιάζει με αυτήν…
Πριν:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
Μετά:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
Αυτό τελειώσαμε! Το FFMPEG είναι έτοιμο για χρήση!
Βήμα 4: Δοκιμή για επιβεβαίωση
Πρέπει να δοκιμάσουμε αν μπορούμε τώρα να τα κάνουμε αυτά στο Anaconda (μέσω Spyder IDE):
- Εισαγωγή πακέτου OpenCV
- Χρησιμοποιήστε το βοηθητικό πρόγραμμα FFMPEG (για ανάγνωση/εγγραφή/επεξεργασία βίντεο)
Δοκιμή 1: Μπορούμε να εισαγάγουμε OpenCV;
Για να απογοητεύσουμε ότι η Anaconda είναι πλέον σε θέση να εισαγάγει το πακέτο OpenCV-Python (συγκεκριμένα, cv2), εκδώστε αυτά στην κονσόλα IPython:
εισαγωγή cv2
εκτύπωση cv2._ έκδοση_
Εάν το πακέτο cv2 εισαχθεί εντάξει χωρίς σφάλματα και η έκδοση cv2 εκτυπωθεί, τότε είμαστε όλοι καλοί!
Δοκιμή 2: Μπορούμε να χρησιμοποιήσουμε τον κωδικοποιητή FFMPEG;
Τοποθετήστε ένα δείγμα
input_video.mp4
αρχείο βίντεο σε έναν κατάλογο. Θέλουμε να δοκιμάσουμε αν μπορούμε:
- διαβάστε αυτό το αρχείο βίντεο.mp4 και
- γράψτε ένα νέο αρχείο βίντεο (μπορεί να είναι.avi ή.mp4 κ.λπ.)
Για να γίνει αυτό πρέπει να έχουμε έναν δοκιμαστικό κώδικα python, να τον ονομάσουμε test.py. Τοποθετήστε τον στον ίδιο κατάλογο με το δείγμα
input_video.mp4
αρχείο.
Αυτό είναι τι
test.py
μπορεί να μοιάζει (Σημείωση: χάρη στις προτάσεις του Pete και του Warren στο πεδίο σχολίων - έχω αντικαταστήσει τον αρχικό κωδικό δοκιμής με αυτόν - δοκιμάστε τον εαυτό σας και ενημερώστε μας αν αυτό λειτουργεί καλύτερα):
εισαγωγή cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = διάβασμα βίντεο με επιτυχία. Λάθος - δεν διαβάζετε βίντεο. Fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", Fourcc, 20.0, (640, 360)) print out.isOpened () # True = εγγραφή βίντεο με επιτυχία. Λάθος - δεν μπορείτε να γράψετε βίντεο. cap.release () out.release ()
Αυτό το τεστ είναι ΠΟΛΥ ΣΗΜΑΝΤΙΚΟ. Εάν θέλετε να επεξεργαστείτε αρχεία βίντεο, θα πρέπει να διασφαλίσετε ότι το Anaconda / Spyder IDE μπορεί να χρησιμοποιήσει το FFMPEG (κωδικοποιητή βίντεο). Μου πήρε μέρες για να λειτουργήσει. Αλλά ελπίζω ότι θα σας πάρει πολύ λιγότερο χρόνο!:) Σημείωση: μια ακόμη πολύ σημαντική συμβουλή όταν χρησιμοποιείτε το Anaconda Spyder IDE. Βεβαιωθείτε ότι έχετε ελέγξει τον τρέχοντα κατάλογο εργασίας (CWD) !!!
Βήμα 5: Δημιουργήστε κώδικα για την ανίχνευση προσώπου
Στόχος
Σε αυτή τη συνεδρία,
- Θα δούμε τα βασικά στοιχεία της ανίχνευσης προσώπου με τη χρήση Haar Feature-based Cascade Classifiers
- Θα επεκτείνουμε το ίδιο για την ανίχνευση ματιών κλπ
Ανίχνευση καταρράκτη Haar στο OpenCV
Εδώ θα ασχοληθούμε με την ανίχνευση. Το OpenCV περιέχει ήδη πολλούς προ-εκπαιδευμένους ταξινομητές για πρόσωπο, μάτια, χαμόγελο κλπ. Αυτά τα αρχεία XML αποθηκεύονται σε φάκελο opencv/data/haarcascades/. Ας δημιουργήσουμε ανιχνευτή προσώπου και ματιών με OpenCV. Πρώτα πρέπει να φορτώσουμε τους απαιτούμενους ταξινομητές XML. Στη συνέχεια, φορτώστε την εικόνα εισόδου (ή βίντεο) σε κατάσταση κλίμακας του γκρι OR μπορούμε να χρησιμοποιήσουμε την κάμερα (για ανίχνευση προσώπου σε πραγματικό χρόνο)
εισαγωγή numpy ως np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/resources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/πηγές/δεδομένα/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/ha.xml ') cap = cv2. VideoCapture (0) ενώ 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) πρόσωπα = face_cascade.detectMultiScale (γκρι, 1,5, 5) για (x, y, w, h) σε όψεις: cv2. ορθογώνιο (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = γκρι [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] eyes = eye_cascade.detectMultiScale (roi_gray) για (π.χ., ey, ew, eh) στα μάτια: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (πρόσωπα)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
Βήμα 6: Δημιουργήστε κώδικα για τη δημιουργία συνόλου δεδομένων
Κάνουμε αναγνώριση προσώπου, οπότε θα χρειαστείτε μερικές εικόνες προσώπου! Μπορείτε είτε να δημιουργήσετε το δικό σας σύνολο δεδομένων είτε να ξεκινήσετε με μία από τις διαθέσιμες βάσεις δεδομένων προσώπου, το https://face-rec.org/databases/ σας δίνει μια ενημερωμένη επισκόπηση. Τρεις ενδιαφέρουσες βάσεις δεδομένων είναι (τμήματα της περιγραφής παρατίθενται από τη διεύθυνση
- AT & T Facedatabase
- Yale Facedatabase A
- Extended Yale Facedatabase B
ΕΔΩ χρησιμοποιώ το δικό μου σύνολο δεδομένων….με τη βοήθεια του κώδικα που δίνεται παρακάτω:
εισαγωγή numpy ως np
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Αρχεία προγράμματος/opencv/πηγές/δεδομένα/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter user id') sampleN = 0; ενώ 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) πρόσωπα = face_cascade.detectMultiScale (γκρι, 1,3, 5) για (x, y, w, h) στις όψεις: δείγμα N = δείγμα Ν+1; cv2.imwrite ("F:/Program Files/projects/face_rec /acesData/User."+str (id)+"."+str (sampleN)+".jpg", grey [y: y+h, x: x+w]) cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) εάν δείγμαN> 20: break cap.release () cv2.destroyAllWindows ()
Βήμα 7: Δημιουργήστε κώδικα για να εκπαιδεύσετε τον αναγνωριστή
Δημιουργήστε τη λειτουργία για την προετοιμασία του σετ εκπαίδευσης
Τώρα, θα ορίσουμε μια συνάρτηση
getImagesWithID (διαδρομή)
που παίρνει την απόλυτη διαδρομή προς τη βάση δεδομένων εικόνων ως όρισμα εισόδου και επιστρέφει πλειάδα λίστας 2, η μία περιέχει τις ανιχνευμένες όψεις και η άλλη περιέχει την αντίστοιχη ετικέτα για αυτήν την όψη. Για παράδειγμα, εάν ο δείκτης ith στη λίστα των προσώπων αντιπροσωπεύει το 5ο άτομο στη βάση δεδομένων, τότε η αντίστοιχη θέση ith στη λίστα ετικετών έχει τιμή ίση με 5.
Τώρα μετατρέψτε τις όψεις του συνόλου δεδομένων (που δημιουργείται στο βήμα 6) σε αρχείο.yml με τη βοήθεια του κώδικα που δίνεται παρακάτω:
εισαγωγή os
εισαγωγή numpy ως np εισαγωγή cv2 από PIL εισαγωγή Εικόνας # Για αναγνώριση προσώπου θα κάνουμε τον αναγνωριστή LBPH Face Recognizer = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec /acesData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (διαδρομή) πρόσωπα = IDs = για το imagePath στο imagePaths: # Διαβάστε την εικόνα και μετατρέψτε σε πρόσωπα κλίμακας του γκρι # Λήψη της ετικέτας της ταυτότητας εικόνας = int (os.path.split (imagePath) [-1].split (".") [1]) # # Ανίχνευση του προσώπου στις όψεις της εικόνας. Προσαρτήστε (faceNP) IDs.append (ID) cv2.imshow ("Προσθήκη προσώπων για μεταφορά", faceNP) cv2.waitKey (10) επιστροφή np.array (ID), πρόσωπα Ids, πρόσωπα = getImagesWithID (διαδρομή) αναγνωριστικό. Εκπαίδευση (πρόσωπα, αναγνωριστικά) αναγνωριστικό.αποθήκευση ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
χρησιμοποιώντας αυτόν τον κώδικα, το σύνολο δεδομένων προσώπου μετατράπηκε σε ένα ενιαίο αρχείο.yml …
Βήμα 8: Δημιουργήστε κώδικα για την αναγνώριση των προσώπων και του αποτελέσματος
Guyzz αυτό είναι το τελευταίο βήμα στο οποίο μπορούμε να δημιουργήσουμε τον κώδικα για την αναγνώριση των προσώπων με τη βοήθεια της κάμερας σας. ΑΥΤΟ ΤΟ ΒΗΜΑ ΥΠΑΡΧΟΥΝ ΔΥΟ ΛΕΙΤΟΥΡΓΙΕΣ ΠΟΥ ΠΡΟΣΦΕΡΟΥΝ…. 1. καταγράφοντας το βίντεο από την κάμερα 2. συγκρίνετε το με το αρχείο.yml
εισαγωγή numpy ως npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/Αρχεία προγράμματος/opencv/πηγές/δεδομένα/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecizer; rec.load ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) ενώ 1: ret, img = cap.read () γκρι = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) πρόσωπα = face_cascade.detectMultiScale (γκρι, 1,5, 5) για (x, y, w, h) στα πρόσωπα: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec. πρόβλεψη (γκρι [y: y+h, x: x+w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "Gaurav" if id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
και τελικά το αποτέλεσμα θα έρθει μπροστά στα μάτια σας …… μπορείτε επίσης να κατεβάσετε το αρχείο zip από κάτω από το σύνδεσμο: Κάντε κλικ εδώ για να κατεβάσετε τους κωδικούς Έτσι, σε αυτό το εκπαιδευτικό εκτελέσαμε το έργο της ανίχνευσης προσώπου+αναγνώρισης χρησιμοποιώντας OpenCV…..αν εσείς όπως αυτό το διδακτικό….. plzzz εγγραφείτε με και ψηφίστε με…… ευχαριστώ φίλους:)
Συνιστάται:
Opencv Ανίχνευση προσώπου, εκπαίδευση και αναγνώριση: 3 βήματα
Opencv Face Detection, Training and Recognition: Το OpenCV είναι μια βιβλιοθήκη ανοιχτού κώδικα οράσεως υπολογιστή, η οποία είναι πολύ δημοφιλής για την εκτέλεση βασικών εργασιών επεξεργασίας εικόνας, όπως θόλωση, ανάμειξη εικόνας, βελτίωση εικόνας καθώς και ποιότητα βίντεο, κατώφλι κ.λπ. Εκτός από την επεξεργασία εικόνας, αποδεικνύει
Αναγνώριση προσώπου και αναγνώριση - Arduino Face ID χρησιμοποιώντας OpenCV Python και Arduino .: 6 βήματα
Αναγνώριση προσώπου και αναγνώριση | Arduino Face ID χρησιμοποιώντας OpenCV Python και Arduino .: Αναγνώριση προσώπου Το αναγνωριστικό προσώπου AKA είναι ένα από τα πιο σημαντικά χαρακτηριστικά στα κινητά τηλέφωνα στις μέρες μας. Έτσι, είχα μια ερώτηση " μπορώ να έχω ένα αναγνωριστικό προσώπου για το έργο μου στο Arduino " και η απάντηση είναι ναι … Το ταξίδι μου ξεκίνησε ως εξής: Βήμα 1: Πρόσβαση σε εμάς
Αναγνώριση Προσώπου στην Πρακτική: 21 Βήματα
Αναγνώριση προσώπου στην πράξη: Αυτό είναι ένα θέμα για το οποίο είμαι τόσο γοητευμένος, που με κάνει να χάνω τον ύπνο: Όραση υπολογιστή, ανίχνευση αντικειμένων και ανθρώπων μέσω ενός προ-εκπαιδευμένου μοντέλου
Κουδούνι πόρτας με αναγνώριση προσώπου: 7 βήματα (με εικόνες)
Πρόσφατα, υπήρξε ένα κύμα ληστειών στη χώρα μου που στοχεύουν ηλικιωμένους στα σπίτια τους. Συνήθως, η πρόσβαση παρέχεται από τους ίδιους τους ενοίκους αφού οι επισκέπτες τους πείθουν ότι είναι φροντιστές/νοσηλευτές. Το
Σε πραγματικό χρόνο αναγνώριση προσώπου: ένα έργο από άκρο σε άκρο: 8 βήματα (με εικόνες)
Σε πραγματικό χρόνο αναγνώριση προσώπου: ένα έργο από άκρο σε άκρο: Στο τελευταίο μου σεμινάριο εξερεύνησης του OpenCV, μάθαμε την ΑΥΤΟΜΑΤΗ ΟΡΑΣΗ ΑΝΤΙΚΕΙΜΕΝΙΚΗ ΠΑΡΑΚΟΛΟΥΘΗΣΗ. Τώρα θα χρησιμοποιήσουμε το PiCam μας για την αναγνώριση προσώπων σε πραγματικό χρόνο, όπως μπορείτε να δείτε παρακάτω: Αυτό το έργο έγινε με αυτήν τη φανταστική «Open Source Computer Vision Library» qu