Η παρακολούθηση χεριών είναι η διαδικασία χρήσης της όρασης μέσω υπολογιστή για τον εντοπισμό και την παρακολούθηση των κινήσεων του χεριού ενός ατόμου σε πραγματικό χρόνο. Η πιο κυρίαρχη εφαρμογή της παρακολούθησης χεριών είναι στα ακουστικά εικονικής πραγματικότητας. Τα ακουστικά σάς επιτρέπουν να χρησιμοποιείτε τα χέρια σας ως είσοδο στη θέση των ελεγκτών αφής. Αυτό με τη σειρά του κάνει την εμπειρία πιο καθηλωτική.
Μάθετε πώς να παρακολουθείτε τα χέρια ενός ατόμου χρησιμοποιώντας Python, OpenCV για όραση υπολογιστή και MediaPipe.
Η Google ανέπτυξε το πλαίσιο MediaPipe, το οποίο περιέχει πολλές λύσεις μηχανικής εκμάθησης. Μία από τις λύσεις είναι η λύση παρακολούθησης χεριών και δακτύλων που ονομάζεται MediaPipe Hands. Για την παρακολούθηση των χεριών, το MediaPipe Hands εκτελεί δύο διαδικασίες: ανίχνευση παλάμης και ανίχνευση ορόσημων.
Ανίχνευση παλάμης χεριού
Το MediaPipe ξεκινά προσδιορίζοντας πού βρίσκονται οι παλάμες στην εικόνα εισόδου. Δεδομένου ότι η εκτίμηση των πλαισίων οριοθέτησης για δύσκαμπτα αντικείμενα είναι πιο απλή από την αναγνώριση χεριών με ενωμένα δάχτυλα.
Ανίχνευση ορόσημων χειρός
Μετά την ανίχνευση παλάμης, το MediaPipe εκτελεί τον εντοπισμό ορόσημων με το χέρι. Το μοντέλο ορόσημου χεριού μπορεί να προβλέψει 21 ακριβείς συντεταγμένες της θέσης κάθε ορόσημου χεριού.
Οι αριθμοί αντιπροσωπεύουν ένα μοναδικό αναγνωριστικό για κάθε ορόσημο.
Ρύθμιση του περιβάλλοντος σας
Για να ακολουθήσετε αυτό το έργο, θα πρέπει να είστε εξοικειωμένοι με το βασικά της Python. Εγκαταστήστε τις ακόλουθες βιβλιοθήκες στο περιβάλλον σας:
- OpenCV: Θα χρησιμοποιήσετε αυτήν τη βιβλιοθήκη για όραση υπολογιστή και για να εκτελέσετε τεχνικές επεξεργασίας εικόνας στην εικόνα εισόδου.
- MediaPipe: Θα χρησιμοποιήσετε αυτήν τη βιβλιοθήκη για να εκτελέσετε ανίχνευση και παρακολούθηση με το χέρι στην εικόνα εισόδου.
- imutils: Θα αλλάξετε το μέγεθος αυτής της βιβλιοθήκης του καρέ βίντεο της εισόδου.
Εκτελέστε την ακόλουθη εντολή στο τερματικό σας για να εγκαταστήσετε τις βιβλιοθήκες OpenCV, MediaPipe και imutils. Εγκαταστήστε το pip—τον διαχειριστή πακέτων Python— αν χρειαστεί. Βεβαιωθείτε ότι έχετε περάσει τις βιβλιοθήκες ως λίστα οριοθετημένη με χώρο.
pip εγκατάσταση OpenCV-Python MediaPipe imutils
Όταν ολοκληρωθεί η ενημέρωση, το περιβάλλον είναι έτοιμο για να ξεκινήσετε την κωδικοποίηση.
Ο πλήρης πηγαίος κώδικας για αυτό το έργο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub.
Εισαγωγή των Απαιτούμενων Βιβλιοθηκών
Θα χρειαστεί να εισαγάγετε τις βιβλιοθήκες που εγκαταστήσατε για να μπορείτε να τις χρησιμοποιήσετε. Ανοίξτε οποιοδήποτε Python IDE, δημιουργήστε ένα αρχείο Python και προσθέστε τις ακόλουθες εισαγωγές:
εισαγωγή cv2
εισαγωγή mediapipe όπως και σ.τ
εισαγωγή imutils
Βεβαιωθείτε ότι εισάγετε το OpenCV ως cv2 και το MediaPipe με πεζά. Εάν δεν το κάνετε, θα εμφανιστεί σφάλμα.
Θα χρησιμοποιήσετε τα mpHands για να καλέσετε τη λύση χεριών MediaPipe και τα χέρια θα αντικρούσουν για να ανιχνεύσουν και να παρακολουθήσουν την είσοδο χεριού. Θα χρησιμοποιήσετε το αντικείμενο mpDraw για να σχεδιάσετε τις συνδέσεις μεταξύ των ορόσημων των αναγνωρισμένων χεριών.
mpHands = mp.solutions.hands
χέρια = mpΧέρια. Χέρια ()
mpDraw = mp.solutions.drawing_utils
Μπορείτε να ρυθμίσετε το μοντέλο χεριών MediaPipe περνώντας διάφορες παραμέτρους στον κατασκευαστή Hands(). Οι προεπιλεγμένες τιμές είναι αρκετά καλές για αυτό το έργο, αλλά μπορείτε να πειραματιστείτε με αυτές για να δείτε πώς επηρεάζουν το μοντέλο:
Θα πρέπει να αφήσετε το static_image_mode ως False για να βεβαιωθείτε ότι το μοντέλο ανιχνεύει τα χέρια μία φορά πριν αρχίσει να τα παρακολουθεί. Επαναλαμβάνει τη διαδικασία παρακολούθησης μόνο εάν η εμπιστοσύνη ανίχνευσης πέσει χαμηλότερη από τη δηλωμένη παράμετρο, καθιστώντας τη συνολική επεξεργασία εισόδου ταχύτερη.
Εκτέλεση παρακολούθησης χεριών
Χρειάζεστε τρεις λειτουργίες για να εκτελέσετε παρακολούθηση χεριού: μία για την επεξεργασία της εισόδου, μία για τη σχεδίαση των συνδέσεων ορόσημο με το χέρι και μια κύρια λειτουργία για τον έλεγχο της ροής του προγράμματος.
Λειτουργία Επεξεργασίας Εισόδου
Αυτή η λειτουργία λαμβάνει την είσοδο, τη μετατρέπει σε κλίμακα του γκρι και τη μεταβιβάζει στο μοντέλο χεριών MediaPipe για να εντοπίσει και να παρακολουθήσει τα χέρια στην είσοδο.
# Επεξεργασία της εικόνας εισόδου
defδιεργασία_εικόνα(img):
# Μετατροπή της εισόδου σε κλίμακα του γκρι
gray_image = cv2.cvtColor (img, cv2.COLOR_BGR2RGB)
αποτελέσματα = hands.process (grey_image)
# Επιστροφή των ανιχνευμένων χεριών στη λειτουργία κλήσης
ΕΠΙΣΤΡΟΦΗ Αποτελέσματα
Η συνάρτηση επιστρέφει τα αποτελέσματα σχετικά με το εάν εντοπίστηκαν χέρια στην είσοδο.
Η συνάρτηση σχεδίασης συνδέσεων ορόσημων χειρός
Αυτή η λειτουργία ελέγχει εάν η λειτουργία επεξεργασίας εισόδου ανίχνευσε χέρια. Εάν υπάρχουν χέρια που έχουν εντοπιστεί, κάνει βρόχο πάνω από κάθε ορόσημο και σχεδιάζει έναν κύκλο γύρω του, παρακολουθώντας το ορόσημο χρησιμοποιώντας Η συνάρτηση απαρίθμησης της Python. Στη συνέχεια σχεδιάζει τις συνδέσεις μεταξύ των ορόσημων στην αρχική είσοδο βίντεο.
# Σχεδίαση συνδέσεων ορόσημων
defdraw_hand_connections(img, αποτελέσματα):
αν results.multi_hand_landmarks:
Για handLms σε results.multi_hand_landmarks:
Για id, lm σε enumerate (handLms.landmark):
h, w, c = img.shape# Εύρεση των συντεταγμένων κάθε ορόσημου
cx, cy = int (lm.x * w), int (lm.y * h)# Εκτύπωση κάθε αναγνωριστικού ορόσημου και συντεταγμένων
# στο τερματικό
εκτύπωση (id, cx, cy)# Δημιουργία κύκλου γύρω από κάθε ορόσημο
cv2.circle (img, (cx, cy), 10, (0, 255, 0),
cv2.FILLED)
# Σχεδίαση των συνδέσεων ορόσημων
mpDraw.draw_landmarks (img, handLms,
mpΧέρια. HAND_CONNECTIONS)
ΕΠΙΣΤΡΟΦΗ img
Η λειτουργία ξεκινά κυκλώνοντας κάθε ορόσημο:
Στη συνέχεια σχεδιάζει τις συνδέσεις χεριών:
Τελικά επιστρέφει την έξοδο του στη συνάρτηση κλήσης.
Η Κύρια Λειτουργία
Δημιουργήστε μια κύρια συνάρτηση που θα ελέγχει τη ροή του προγράμματός σας. Θα λάβει την είσοδο και θα αλλάξει το μέγεθος του καρέ βίντεο για να εξασφαλίσει τη συνοχή της εξόδου. Περάστε την είσοδο στη λειτουργία επεξεργασίας η οποία στη συνέχεια θα ανιχνεύσει και θα παρακολουθήσει τα χέρια. Μεταφέρετε τα επιστρεφόμενα αποτελέσματα στη λειτουργία σχεδίασης σύνδεσης ορόσημων χειρός, η οποία θα σχεδιάσει τη σύνδεση στην αρχική είσοδο βίντεο. Τελικά θα εμφανίσει την έξοδο στον χρήστη.
defκύριος():
# Αντικαταστήστε το 0 με τη διαδρομή βίντεο για να χρησιμοποιήσετε το a
# προηχογραφημένο βίντεο
cap = cv2.VideoCapture(0)ενώΑληθής:
# Λήψη της εισαγωγής
επιτυχία, εικόνα = cap.read()
εικόνα = imutils.resize (εικόνα, πλάτος=500, ύψος=500)
αποτελέσματα = διεργασία_εικόνα (εικόνα)
draw_hand_connections (εικόνα, αποτελέσματα)# Εμφάνιση της εξόδου
cv2.imshow("Ιχνηλάτης χεριών", εικόνα)
# Το πρόγραμμα τερματίζεται όταν πατηθεί το πλήκτρο q
αν cv2.waitKey(1) == Ord('q'):
cap.release()
cv2.destroyAllWindows()
Το τελευταίο βήμα είναι η εκτέλεση του προγράμματός σας. Ο παρακάτω κώδικας διασφαλίζει ότι όταν εκτελείτε το πρόγραμμα, εκτελείται πρώτη η κύρια λειτουργία.
αν __όνομα__ == "__κύριος__":
κύριος()
Όταν το πρόγραμμα εκτελείται, παράγει έξοδο ως εξής:
Το πρόγραμμα παρακολουθεί τα χέρια σε πραγματικό χρόνο.
Παρακολούθηση χεριών για καθηλωτική εικονική πραγματικότητα
Η παρακολούθηση χεριών στην εικονική πραγματικότητα κάνει την τεχνολογία πιο δελεαστική. Τα ακουστικά εικονικής πραγματικότητας έχουν αρχίσει να εισάγουν την παρακολούθηση χεριών, φέρνοντας μια αίσθηση ενισχυμένης πραγματικότητας στον εικονικό κόσμο. Τα ακουστικά επιτρέπουν στο χρήστη να εισάγει εντολές χρησιμοποιώντας ένα εικονικό χέρι.
Η παρακολούθηση χεριών σε εικονικά ακουστικά είναι μόνο μία εφαρμογή αυτής της τεχνολογίας. Μπορείτε να ενσωματώσετε την παρακολούθηση χεριών σε οποιαδήποτε εφαρμοστέα περιοχή της αρεσκείας σας.