Πίνακας περιεχομένων:
- Βήμα 1: Σχεδιάζοντας ένα ορθογώνιο στο αναγνωρισμένο αντικείμενο
- Βήμα 2: Ανακαλύψτε το μονοπάτι στο οποίο έχει προχωρήσει το αντικείμενο
- Βήμα 3: Ενσωμάτωση και των δύο κωδικών
Βίντεο: Παρακολούθηση αντικειμένων Opencv: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Η ανίχνευση κινούμενων αντικειμένων είναι μια τεχνική που χρησιμοποιείται στην όραση του υπολογιστή και στην επεξεργασία εικόνας. Πολλαπλά διαδοχικά καρέ από ένα βίντεο συγκρίνονται με διάφορες μεθόδους για να προσδιοριστεί εάν ανιχνεύεται κάποιο κινούμενο αντικείμενο.
Η ανίχνευση κινούμενων αντικειμένων έχει χρησιμοποιηθεί για ένα ευρύ φάσμα εφαρμογών όπως παρακολούθηση βίντεο, αναγνώριση δραστηριότητας, παρακολούθηση της οδικής κατάστασης, ασφάλεια του αεροδρομίου, παρακολούθηση της προστασίας κατά μήκος των θαλάσσιων συνόρων κ.λπ.
Η ανίχνευση κινούμενου αντικειμένου είναι η αναγνώριση της φυσικής κίνησης ενός αντικειμένου σε ένα δεδομένο μέρος ή περιοχή. [2] Ενεργώντας την κατάτμηση μεταξύ κινούμενων αντικειμένων και ακίνητων περιοχών ή περιοχών, η κίνηση των κινούμενων αντικειμένων θα μπορούσε να εντοπιστεί και έτσι θα μπορούσε να αναλυθεί αργότερα. Για να επιτευχθεί αυτό, σκεφτείτε ότι ένα βίντεο είναι μια δομή βασισμένη σε μεμονωμένα καρέ, η ανίχνευση κινούμενου αντικειμένου είναι να βρείτε τον (τους) κινούμενο (-ους) στόχο (ες) σε πρώτο πλάνο, είτε σε κάθε καρέ βίντεο είτε μόνο όταν ο κινούμενος στόχος εμφανίσει την πρώτη εμφάνιση στο βίντεο.
Θα χρησιμοποιήσω τον συνδυασμό Opnecv και Python για τον εντοπισμό και την παρακολούθηση των αντικειμένων με βάση το χρώμα
Βήμα 1: Σχεδιάζοντας ένα ορθογώνιο στο αναγνωρισμένο αντικείμενο
εάν ο υπολογιστής σας δεν έχει python ή opencv, ακολουθήστε αυτό το παρακάτω inststructables
εδώ είναι ο κώδικας python:
εισαγωγή cv2import numpy ως np
cap = cv2. VideoCapture (0)
ενώ True:
_, πλαίσιο = cap.read () hsv = cv2.cvtColor (πλαίσιο, cv2. COLOR_BGR2HSV)
χαμηλότερο_κίτρινο = μ.συστοιχία ([20, 110, 110])
άνω_κίτρινο = μ.συστοιχία ([40, 255, 255])
κίτρινη μάσκα = cv2.inRange (hsv, κάτω_κίτρινη, άνω_κίτρινη)
(_, περιγράμματα, _) = cv2.findContours (κίτρινη μάσκα, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
για περίγραμμα σε περιγράμματα:
περιοχή = cv2.contourArea (περίγραμμα)
εάν (περιοχή> 800):
x, y, w, h = cv2.boundingRect (περίγραμμα) πλαίσιο = cv2. ορθογώνιο (πλαίσιο, (x, y), (x+w, y+h), (0, 0, 255), 10)
cv2.imshow ("παρακολούθηση", πλαίσιο)
k = cv2.waitKey (5) & 0XFF
αν k == 27: διάλειμμα
cv2.destroyAllWindows ()
cap.release ()
Βήμα 2: Ανακαλύψτε το μονοπάτι στο οποίο έχει προχωρήσει το αντικείμενο
για να εντοπίσουμε το μονοπάτι:
για i στο εύρος (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (frame, center_points [i - 1], center_points , (b, g, r), 4)
Βήμα 3: Ενσωμάτωση και των δύο κωδικών
πρόκειται να ενσωματώσω και τους δύο κώδικες
εισαγωγή cv2import numpy ως np εισαγωγή τυχαία από συλλογές deque εισαγωγής deque
cap = cv2. VideoCapture (1)
# Για παρακολούθηση όλων των σημείων όπου επισκέφθηκε το αντικείμενο center_points = deque ()
ενώ True:
# Διαβάστε και αναστρέψτε το πλαίσιο _, frame = cap.read () frame = cv2.flip (frame, 1)
# Θολώστε λίγο το πλαίσιο
blur_frame = cv2. GaussianBlur (πλαίσιο, (7, 7), 0)
# Μετατροπή από BGR σε μορφή χρώματος HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Ορίστε το κάτω και το ανώτερο εύρος του χρώματος hsv για ανίχνευση. Μπλε εδώ
lower_blue = np.array ([100, 50, 50]) above_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, above_blue)
# Φτιάξτε ελλειπτικό πυρήνα
πυρήνας = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Μορφή ανοίγματος (διάβρωση ακολουθούμενη από διαστολή)
μάσκα = cv2.morphologyEx (μάσκα, cv2. MORPH_OPEN, πυρήνας)
# Βρείτε όλα τα περιγράμματα
περιγράμματα, ιεραρχία = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [-2:]
αν len (περιγράμματα)> 0:
# Βρείτε το μεγαλύτερο περίγραμμα
# Βρείτε το κέντρο του περιγράμματος και σχεδιάστε γεμάτο κύκλο
στιγμές = cv2.moments (το μεγαλύτερο_κείμενο) centre_of_contour = (int (στιγμές ['m10'] / στιγμές ['m00']), int (στιγμές ['m01'] / στιγμές ['m00'])) cv2.circle (καρέ, centre_of_contour, 5, (0, 0, 255), -1)
# Συνδέστε το περίγραμμα με κύκλο
έλλειψη = cv2.fitEllipse (το μεγαλύτερο_κείμενο) cv2.ellipse (πλαίσιο, έλλειψη, (0, 255, 255), 2)
# Αποθηκεύστε το κέντρο του περιγράμματος, ώστε να σχεδιάσουμε γραμμές παρακολουθώντας το
center_points.appendleft (centre_of_contour)
# Τραβήξτε γραμμή από τα κεντρικά σημεία του περιγράμματος
για i στο εύρος (1, len (center_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt ((((center_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (frame, center_points [i - 1], center_points , (b, g, r), 4)
cv2.imshow («πρωτότυπο», πλαίσιο)
cv2.imshow («μάσκα», μάσκα)
k = cv2.waitKey (5) & 0xFF
αν k == 27: διάλειμμα
cv2.destroyAllWindows ()
cap.release ()
Συνιστάται:
Ανίχνευση αντικειμένων με πίνακες Sipeed MaiX (Kendryte K210): 6 βήματα
Ανίχνευση αντικειμένων με πίνακες Sipeed MaiX (Kendryte K210): Ως συνέχεια του προηγούμενου άρθρου μου σχετικά με την αναγνώριση εικόνας με τους πίνακες Sipeed MaiX, αποφάσισα να γράψω ένα άλλο σεμινάριο, εστιάζοντας στην ανίχνευση αντικειμένων. Πρόσφατα εμφανίστηκε κάποιο ενδιαφέρον υλικό με το τσιπ Kendryte K210, συμπεριλαμβανομένου του S
Προγραμματισμός με αντικείμενο: Δημιουργία εκμάθησης αντικειμένων/μέθοδος διδασκαλίας/τεχνική με τη χρήση Shape Puncher: 5 βήματα
Αντικειμενικός Προγραμματισμός: Δημιουργία Αντικειμένων Μάθησης/Διδακτικής Μέθοδος/Τεχνικής Χρήσης Shape Puncher: Μέθοδος εκμάθησης/διδασκαλίας για μαθητές που είναι νέοι στον αντικειμενοστραφή προγραμματισμό. Αυτός είναι ένας τρόπος για να τους επιτρέψετε να οπτικοποιήσουν και να δουν τη διαδικασία δημιουργίας αντικειμένων από κλάσεις.Μέρη:1. EkTools μεγάλη διάτρηση 2 ιντσών. τα στερεά σχήματα είναι καλύτερα.2. Κομμάτι χαρτί ή γ
Υπερηχητικός αισθητήρας για τη λήψη θετικών αλλαγών αντικειμένων: 3 βήματα
Υπερηχητικός αισθητήρας για τη λήψη θετικών αλλαγών αντικειμένων: Είναι σημαντικό να έχετε ασφαλή τα πολύτιμα αντικείμενα σας, θα ήταν κουτό αν συνεχίσετε να φυλάτε το κάστρο σας όλη την ημέρα. Χρησιμοποιώντας την κάμερα raspberry pi μπορείτε να τραβήξετε στιγμιότυπα την κατάλληλη στιγμή. Αυτός ο οδηγός θα σας βοηθήσει να τραβήξετε ένα βίντεο ή να τραβήξετε την εικόνα
ChatterBox - ο μεταφραστής αντικειμένων: 6 βήματα
ChatterBox - Ο Μεταφραστής Αντικειμένων: Μια συσκευή που κάνει κάθε αντικείμενο να μιλά! Χρησιμοποιήστε με προσοχή
Παρακολούθηση αντικειμένων - Έλεγχος βάσης κάμερας: 4 βήματα
Object Tracking - Camera Mount Control: Γεια σε όλους, Σε αυτό το Instructable θα σας δείξω τις προόδους που έγιναν για το Object Tracking Project μου. Εδώ μπορείτε να βρείτε το προηγούμενο Instructable: https://www.instructables.com/id/Object-Tracking/ και εδώ μπορείτε να βρείτε λίστες αναπαραγωγής στο youtube με όλα τα