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

Συσκευή παρακολούθησης προσώπου! Python & Arduino: 5 βήματα
Συσκευή παρακολούθησης προσώπου! Python & Arduino: 5 βήματα

Βίντεο: Συσκευή παρακολούθησης προσώπου! Python & Arduino: 5 βήματα

Βίντεο: Συσκευή παρακολούθησης προσώπου! Python & Arduino: 5 βήματα
Βίντεο: Νέα Raspberry Pi 3 Tutorial - Πώς να δημιουργήσει για Gaming & Entertainment Έργα 2024, Νοέμβριος
Anonim
Image
Image
Συσκευή παρακολούθησης προσώπου! Python & Arduino
Συσκευή παρακολούθησης προσώπου! Python & Arduino
Συσκευή παρακολούθησης προσώπου! Python & Arduino
Συσκευή παρακολούθησης προσώπου! Python & Arduino

Από Techovator0819Κανάλι μου στο Youtube Ακολουθήστε περισσότερα από τον συγγραφέα:

IoT: Weather Box (με προσαρμοσμένους συναγερμούς και χρονοδιακόπτες)
IoT: Weather Box (με προσαρμοσμένους συναγερμούς και χρονοδιακόπτες)
IoT: Weather Box (με προσαρμοσμένους συναγερμούς και χρονοδιακόπτες)
IoT: Weather Box (με προσαρμοσμένους συναγερμούς και χρονοδιακόπτες)
Το πολυλειτουργικό αυτόνομο ρομπότ: 'Asset'
Το πολυλειτουργικό αυτόνομο ρομπότ: 'Asset'
Το πολυλειτουργικό αυτόνομο ρομπότ: 'Asset'
Το πολυλειτουργικό αυτόνομο ρομπότ: 'Asset'

Σχετικά: Μου αρέσει απλά να φτιάχνω νέα πράγματα. Όπως πράγματα που αφορούν μικροελεγκτές, μηχανολογία, Τεχνητή Νοημοσύνη, Πληροφορική και οτιδήποτε άλλο με ενδιαφέρει. Και εδώ θα βρείτε όλα τα… Περισσότερα για το Techovator0819 »

Γεια σε όλους εκεί έξω που διαβάζουν αυτό το διδακτικό. Αυτή είναι μια συσκευή παρακολούθησης προσώπου που λειτουργεί σε μια βιβλιοθήκη python που ονομάζεται OpenCV. Το βιογραφικό σημείωσε «Computer Vision». Στη συνέχεια, δημιούργησα μια σειριακή διεπαφή μεταξύ του υπολογιστή μου και του Arduino UNO. Αυτό σημαίνει ότι αυτό δεν λειτουργεί μόνο στην Python.

Αυτή η συσκευή αναγνωρίζει το πρόσωπό σας στο καρέ, στη συνέχεια στέλνει ορισμένες εντολές στο Arduino για να τοποθετήσει την κάμερα με τέτοιο τρόπο ώστε να παραμένει μέσα στο κάδρο! Ακούγεται καλό? Ας το κάνουμε αμέσως.

Προμήθειες

1. Arduino UNO

2. 2 x Servo Motors (Οποιοσδήποτε σερβοκινητήρας θα είναι καλός, αλλά χρησιμοποίησα το Tower Pro SG90)

3. Εγκατάσταση Python

4. Εγκατάσταση OpenCV

5. Κάμερα Ιστού

Βήμα 1: Εγκατάσταση Python και OpenCV

Η εγκατάσταση της Python είναι αρκετά απλή!

www.python.org/downloads/

Μπορείτε να ακολουθήσετε τον παραπάνω σύνδεσμο για να κατεβάσετε την έκδοση python (Mac, Windows ή Linux) που σας ταιριάζει καλύτερα (64 bit ή 32 bit). Η υπόλοιπη διαδικασία εγκατάστασης είναι απλή και θα σας καθοδηγήσει η διεπαφή.

Μόλις ολοκληρώσετε την εγκατάσταση, ανοίξτε τη γραμμή εντολών και πληκτρολογήστε τα ακόλουθα:

pip εγκατάσταση opencv-python

Αυτό θα πρέπει να εγκαταστήσει τη βιβλιοθήκη openCV. Σε περίπτωση προβλημάτων λήψης, μπορείτε να δείτε αυτήν τη σελίδα.

Αφού δημιουργήσαμε το Περιβάλλον και όλες τις προϋποθέσεις, ας δούμε πώς μπορούμε πραγματικά να το φτιάξουμε!

Βήμα 2: Ποια είναι τα χαρακτηριστικά που μοιάζουν με το Haar;

Τα χαρακτηριστικά που μοιάζουν με Haar είναι χαρακτηριστικά μιας ψηφιακής εικόνας. Το όνομα προέρχεται από τα κύματα Haar. Πρόκειται για οικογένεια τετραγώνων κυμάτων που χρησιμοποιούνται για την αναγνώριση χαρακτηριστικών σε μια ψηφιακή εικόνα. Οι καταρράκτες Haar είναι βασικά ένας ταξινομητής που μας βοηθά να ανιχνεύσουμε αντικείμενα (στην περίπτωσή μας) χρησιμοποιώντας τα χαρακτηριστικά που μοιάζουν με τον λαγό.

Στην περίπτωσή μας, για λόγους απλότητας, θα χρησιμοποιήσουμε προ-εκπαιδευμένους καταρράκτες Haar για τον εντοπισμό προσώπων. Μπορείτε να ακολουθήσετε αυτόν τον σύνδεσμο μιας σελίδας github και να κατεβάσετε το αρχείο xml για τον καταρράκτη Haar.

1. Κάντε κλικ στο 'haarcascade_frontalface_alt.xml'

2. Κάντε κλικ στο κουμπί 'Raw' στο επάνω δεξί τμήμα του παραθύρου κωδικού.

3. Θα σας κατευθύνει σε άλλη σελίδα με μόνο κείμενο.

4. Κάντε δεξί κλικ και πατήστε "Αποθήκευση ως.."

5. Αποθηκεύστε τον στον ίδιο κατάλογο ή φάκελο με αυτόν του κώδικα python που πρόκειται να γράψετε.

Βήμα 3: Κωδικοποίηση σε Python

εισαγωγή cv2

εισαγωγή numpy ως np εισαγωγή σειριακού χρόνου εισαγωγής

Εισάγουμε όλες τις βιβλιοθήκες που χρειαζόμαστε.

ard = serial. Serial ("COM3", 9600)

Δημιουργούμε ένα σειριακό αντικείμενο που ονομάζεται «ard». Καθορίζουμε επίσης το όνομα θύρας και το BaudRate ως παραμέτρους.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Δημιουργούμε ένα άλλο αντικείμενο για τον καταρράκτη Haar. Βεβαιωθείτε ότι το αρχείο HaarCascade παραμένει στον ίδιο φάκελο με αυτό το πρόγραμμα python.

vid = cv2. VideoCapture (0)

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

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

ενώ True:

_, frame = vid.read ()#διαβάζει το τρέχον πλαίσιο στη μεταβλητή πλαίσιο γκρι = cv2.cvtColor (πλαίσιο, cv2. COLOR_BGR2GRAY)#μετατρέπει πλαίσιο -> κλίμακα σε γκρι εικόνα#η ακόλουθη γραμμή ανιχνεύει πρόσωπα. #Πρώτη παράμετρος είναι η εικόνα στην οποία θέλετε να ανιχνεύσετε στο #minSize = () καθορίζει το ελάχιστο μέγεθος του προσώπου σε pixel #Κάντε κλικ στον παραπάνω σύνδεσμο για να μάθετε περισσότερα σχετικά με τα πρόσωπα ταξινόμησης Cascade = face_cascade.detectMultiScale (γκρι, minSize = (80, 80), minNeighbors = 3) #A για βρόχο για τον εντοπισμό των προσώπων. για (x, y, w, h) σε όψεις: cv2. ορθογώνιο (πλαίσιο, (x, y), (x+w, y+h), (255, 0, 0), 2)#σχεδιάζει ένα ορθογώνιο γύρω το πρόσωπο Xpos = x+(w/2)#υπολογίζει τη συντεταγμένη Χ του κέντρου του προσώπου. Ypos = y+(h/2) #υπολογίζει τον συντεταγμένο Y του κέντρου του προσώπου εάν Xpos> 280: #Οι ακόλουθοι κώδικες μπλοκάρουν αν το πρόσωπο είναι ard.write ('L'.encode ()) #on αριστερά, δεξιά, πάνω ή κάτω σε σχέση με το time.sleep (0,01) #κέντρο του πλαισίου. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0.01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0.01) else: ard.write ('S'.encode ()) time.sleep (0.01) break cv2.imshow (' frame ', frame)#εμφανίζει το πλαίσιο σε ξεχωριστό παράθυρο. k = cv2.waitKey (1) & 0xFF εάν (k == ord ('q')): #if 'q' πατηθεί στο πληκτρολόγιο, βγαίνει από τον βρόχο while Διακοπή

cv2.destroyAllWindows () #κλείνει όλα τα παράθυρα

ard.close () #κλείνει τη σειριακή επικοινωνία

vid.release () #σταματά να λαμβάνει βίντεο από την κάμερα ιστού.

Βήμα 4: Προγραμματισμός του Arduino

Μη διστάσετε να τροποποιήσετε το πρόγραμμα σύμφωνα με τη ρύθμιση υλικού που ταιριάζει στις ανάγκες σας.

#περιλαμβάνω

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

void setup () {

// βάλτε τον κωδικό εγκατάστασης εδώ, για να εκτελεστεί μία φορά: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); καθυστέρηση (1000)? }

char input = ""; // η σειριακή είσοδος αποθηκεύεται σε αυτήν τη μεταβλητή

void loop () {

// βάλτε τον κύριο κωδικό σας εδώ, για να εκτελείται επανειλημμένα: if (Serial.available ()) {// ελέγχει εάν υπάρχουν δεδομένα στη σειριακή είσοδο buffer = Serial.read (); // διαβάζει τα δεδομένα σε μια μεταβλητή εάν (εισαγωγή == 'U') {servoY.write (y+1); // ρυθμίζει τη γωνία σερβο σύμφωνα με την είσοδο y += 1; // ενημερώνει την τιμή της γωνίας} else if (εισαγωγή == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (εισαγωγή == 'L') {servoX.write (x-1); x -= 1; } else if (εισαγωγή == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } input = ""; // καθαρίζει τη μεταβλητή} // η διαδικασία επαναλαμβάνεται συνεχώς !!:)}

Βήμα 5: Συμπέρασμα

Αυτός είναι ένας ωραίος και ένας διαδραστικός τρόπος μέσω του οποίου μπορείτε να σχεδιάσετε την ενσωμάτωση του Computer Vision στα έργα σας Arduino. Το Computer Vision είναι στην πραγματικότητα αρκετά διασκεδαστικό. Και ελπίζω πραγματικά ότι σας άρεσε. Αν ναι, ενημερώστε με στα σχόλια. Και παρακαλώ εγγραφείτε στο κανάλι μου στο youtube. Ευχαριστώ εκ των προτέρων <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Συνιστάται: