Cuprins:
- Pasul 1: Desenarea unui dreptunghi pe obiectul recunoscut
- Pasul 2: Urmăriți calea pe care s-a mutat obiectul
- Pasul 3: Integrarea ambelor coduri
Video: Urmărirea obiectelor Opencv: 3 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Detectarea obiectelor în mișcare este o tehnică utilizată în viziunea computerizată și procesarea imaginilor. Mai multe cadre consecutive dintr-un videoclip sunt comparate prin diferite metode pentru a determina dacă este detectat vreun obiect în mișcare.
Detectarea obiectelor în mișcare a fost utilizată pentru o gamă largă de aplicații precum supravegherea video, recunoașterea activității, monitorizarea stării drumurilor, siguranța aeroportului, monitorizarea protecției de-a lungul frontierei marine etc.
Detectarea obiectelor în mișcare este de a recunoaște mișcarea fizică a unui obiect într-un anumit loc sau regiune. [2] Prin acționarea segmentării între obiectele în mișcare și zona sau regiunea staționară, mișcarea obiectelor în mișcare ar putea fi urmărită și astfel ar putea fi analizată ulterior. Pentru a realiza acest lucru, considerați că un videoclip este o structură construită pe cadre unice, detectarea obiectelor în mișcare constă în găsirea țintei în mișcare din prim plan, fie în fiecare cadru video, fie numai atunci când ținta în mișcare prezintă prima apariție în videoclip.
Voi folosi combinația Opnecv și Python pentru a detecta și urmări obiectele pe baza culorii
Pasul 1: Desenarea unui dreptunghi pe obiectul recunoscut
dacă computerul dvs. nu are python sau opencv, vă rugăm să urmați acest lucru de mai jos
aici este codul python:
import cv2import numpy ca np
cap = cv2. VideoCapture (0)
în timp ce este adevărat:
_, cadru = cap.read () hsv = cv2.cvtColor (cadru, cv2. COLOR_BGR2HSV)
lower_yellow = np.array ([20, 110, 110])
upper_yellow = np.array ([40, 255, 255])
yellow_mask = cv2.inRange (hsv, lower_yellow, upper_yellow)
(_, contururi, _) = cv2.findContours (mască_galbenă, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
pentru contur în contururi:
area = cv2.contourArea (contur)
dacă (suprafață> 800):
x, y, w, h = cv2.boundingRect (contur) frame = cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow („urmărire”, cadru)
k = cv2.waitKey (5) & 0XFF
dacă k == 27: pauză
cv2.destroyAllWindows ()
cap.release ()
Pasul 2: Urmăriți calea pe care s-a mutat obiectul
pentru a urmări calea:
pentru i în intervalul (1, len (centre_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((centre_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (cadru, puncte_centrale [i - 1], puncte_centrale , (b, g, r), 4)
Pasul 3: Integrarea ambelor coduri
Voi integra atât codul
import cv2import numpy ca np import aleatoriu din colecții import deque
cap = cv2. VideoCapture (1)
# Pentru a urmări toate punctele în care obiectul a vizitat center_points = deque ()
în timp ce este adevărat:
# Citește și răstoarnă cadrul _, cadru = cap.read () cadru = cv2.flip (cadru, 1)
# Estompează puțin cadrul
blur_frame = cv2. GaussianBlur (cadru, (7, 7), 0)
# Convertiți din formatul de culoare BGR în HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definiți gama inferioară și superioară a culorii hsv pentru detectare. Albastru aici
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Faceți nucleu eliptic
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morf de deschidere (eroziune urmată de dilatare)
mask = cv2.morphologyEx (mască, cv2. MORPH_OPEN, kernel)
# Găsiți toate contururile
contururi, ierarhie = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
dacă len (contururi)> 0:
# Găsiți conturul cel mai mare cont_cort = max (contururi, cheie = cv2.contourArea)
# Găsiți centrul conturului și desenați cercul umplut
momente = cv2.moments (contur_mai mare) centru_contur = (int (momente ['m10'] / momente ['m00']), int (momente ['m01'] / momente ['m00'])) cv2.circle (cadru, centru_conturului, 5, (0, 0, 255), -1)
# Legați conturul cu cercul
elipsă = cv2.fitEllipse (contur_cea mai mare) cv2.ellipse (cadru, elipsă, (0, 255, 255), 2)
# Salvați centrul conturului, astfel încât să trasăm linia de urmărire a acestuia
center_points.appendleft (centre_of_contour)
# Trageți linia din punctele centrale ale conturului
pentru i în intervalul (1, len (centre_points)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) if math.sqrt (((centre_points [i - 1] [0] - center_points [0]) ** 2) + ((center_points [i - 1] [1] - center_points [1]) ** 2)) <= 50: cv2.line (cadru, puncte_centrale [i - 1], puncte_centrale , (b, g, r), 4)
cv2.imshow („original”, cadru)
cv2.imshow („mască”, mască)
k = cv2.waitKey (5) & 0xFF
dacă k == 27: pauză
cv2.destroyAllWindows ()
cap.release ()
Recomandat:
Senzor de viziune MU Micro: bit - Urmărirea obiectelor: 7 pași
Micro: bit MU Vision Sensor - Object Tracking: Deci, în acest instructable vom începe programarea Smart Car pe care o construim în acest instructable și că am instalat un senzor de viziune MU în acest instructable. Vom programa micro: bit cu o urmărire simplă a obiectelor, așa că
Senzor de viziune micro: bit MU - Urmărirea obiectelor: 6 pași
Senzor de viziune MU Micro: bit - Obiecte de urmărire: Acesta este al patrulea ghid al senzorului de viziune MU pentru micro: biți. Aici voi trece prin modul de urmărire a obiectelor cu micro: bit și să scriu coordonatele pe un ecran OLED. În celelalte ghiduri am trecut prin modul de conectare a micro: bit la
Urmărirea obiectelor bazate pe detectarea culorii: 10 pași
Urmărirea obiectelor bazate pe detectarea culorilor: Povestea Am făcut acest proiect pentru a învăța procesarea imaginilor folosind Raspberry PI și CV deschis. Pentru a face acest proiect mai interesant, am folosit două servomotoare SG90 și am montat camera pe acesta. Un motor folosit pentru a se deplasa orizontal și al doilea motor folosit pentru a se deplasa vertical
Raspberry Pi - Rover autonom Mars cu urmărirea obiectelor OpenCV: 7 pași (cu imagini)
Raspberry Pi - Rover autonom Mars cu urmărirea obiectelor OpenCV: alimentat de un Raspberry Pi 3, recunoaștere a obiectelor Open CV, senzori cu ultrasunete și motoare de curent continuu. Acest rover poate urmări orice obiect pentru care este antrenat și se poate deplasa pe orice teren
Urmărirea obiectelor - Controlul montării camerei: 4 pași
Urmărirea obiectelor - Controlul montării camerei: Bună ziua tuturor, în acest instructabil vă voi arăta progresele realizate pentru proiectul meu de urmărire a obiectelor. Aici puteți găsi instructabilul anterior: https://www.instructables.com/id/Object-Tracking/ și aici puteți găsi liste de redare YouTube cu toate t