Taula de continguts:
- Pas 1: dibuixar un rectangle a l’objecte reconegut
- Pas 2: traça el camí per on s'ha mogut l'objecte
- Pas 3: integració dels dos codis
Vídeo: Seguiment d'objectes Opencv: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
La detecció d'objectes en moviment és una tècnica utilitzada en la visió per computador i el processament d'imatges. Diversos mètodes consecutius d’un vídeo es comparen mitjançant diversos mètodes per determinar si es detecta algun objecte en moviment.
La detecció d’objectes en moviment s’ha utilitzat per a una àmplia gamma d’aplicacions com la videovigilància, el reconeixement d’activitats, el control de l’estat de la carretera, la seguretat de l’aeroport, el control de la protecció al llarg de la frontera marítima, etc.
La detecció d'objectes en moviment consisteix a reconèixer el moviment físic d'un objecte en un lloc o regió determinats. [2] Actuant la segmentació entre objectes en moviment i àrea o regió estacionàries, es podria fer un seguiment del moviment dels objectes en moviment i, per tant, es podria analitzar posteriorment. Per aconseguir-ho, tingueu en compte que un vídeo és una estructura basada en fotogrames individuals; la detecció d’objectes en moviment consisteix a trobar els objectius mòbils en primer pla, ja sigui en cada fotograma de vídeo o només quan l’objectiu en moviment mostra la primera aparició al vídeo.
Utilitzaré la combinació Opnecv i Python per detectar i fer un seguiment dels objectes en funció del color
Pas 1: dibuixar un rectangle a l’objecte reconegut
si el vostre ordinador no té python ni opencv, seguiu això a continuació, insstructables
aquí teniu el codi python:
importa cv2import numpy com a np
cap = cv2. VideoCapture (0)
mentre que és cert:
_, frame = cap.read () hsv = cv2.cvtColor (frame, 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)
(_, contorns, _) = cv2.findContours (màscara_groga, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
per a contorns en contorns:
area = cv2.contourArea (contorn)
si (àrea> 800):
x, y, w, h = cv2.boundingRect (contorn) frame = cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow ("seguiment", marc)
k = cv2.waitKey (5) i 0XFF
si k == 27: trencar
cv2.destroyAllWindows ()
cap.release ()
Pas 2: traça el camí per on s'ha mogut l'objecte
per traçar el camí:
per a l’interval (1, len (punts_centres)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) si math.sqrt (((punts_centre [i - 1] [0] - punts_centre [0]) ** 2) + ((punts_centre [i - 1] [1] - punts_centre [1]) ** 2)) <= 50: cv2.line (marc, punts_centre [i - 1], punts_centre , (b, g, r), 4)
Pas 3: integració dels dos codis
Vaig a integrar tant el codi
importar cv2import numpy com np importar aleatòriament des de col·leccions
cap = cv2. VideoCapture (1)
# Per fer un seguiment de tots els punts on l'objecte ha visitat centres_punts = deque ()
mentre que és cert:
# Llegir i capgirar el marc _, frame = cap.read () frame = cv2.flip (frame, 1)
# Difuminar una mica el marc
blur_frame = cv2. GaussianBlur (marc, (7, 7), 0)
# Converteix de format de color BGR a HSV
hsv = cv2.cvtColor (blur_frame, cv2. COLOR_BGR2HSV)
# Definiu l'interval inferior i superior del color hsv per detectar. Blau aquí
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Feu nucli el·líptic
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morf d'obertura (erosió seguida de dilatació)
mask = cv2.morphologyEx (màscara, cv2. MORPH_OPEN, nucli)
# Cerca tots els contorns
contorns, jerarquia = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
si len (contorns)> 0:
# Troba el contorn més gran contorn_major = màxim (contorns, clau = cv2.contourArea)
# Cerqueu el centre del contorn i dibuixeu un cercle ple
moments = cv2.moments (major_contour) centre_of_contour = (int (moments ['m10'] / moments ['m00']), int (moments ['m01'] / moments ['m00'])) cv2.circle (frame, centre_contorn, 5, (0, 0, 255), -1)
# Lliga el contorn amb un cercle
el·lipse = cv2.fitEllipse (contorn_major) cv2.ellipse (marc, el·lipse, (0, 255, 255), 2)
# Deseu el centre del contorn per dibuixar-ne la línia
center_points.appendleft (centre_of_contour)
# Dibuixeu una línia des dels punts centrals del contorn
per a l’interval (1, len (punts_centres)): b = random.randint (230, 255) g = random.randint (100, 255) r = random.randint (100, 255) si math.sqrt (((punts_centre [i - 1] [0] - punts_centre [0]) ** 2) + ((punts_centre [i - 1] [1] - punts_centre [1]) ** 2)) <= 50: cv2.line (marc, punts_centre [i - 1], punts_centre , (b, g, r), 4)
cv2.imshow ('original', marc)
cv2.imshow ('màscara', màscara)
k = cv2.waitKey (5) i 0xFF
si k == 27: trencar
cv2.destroyAllWindows ()
cap.release ()
Recomanat:
Sensor de visió MU de micro: bits: seguiment d'objectes: 7 passos
Sensor de visió MU de micro: bits: seguiment d'objectes: per tant, en aquest instructable començarem a programar el Smart Car que construïm en aquest instructable i que hi instal·larem un sensor de visió MU en aquest instructable. Programarem el micro: una mica amb un simple seguiment d'objectes, així que
Programació orientada a objectes: Creació d’objectes Mètode / tècnica d’aprenentatge / ensenyament mitjançant l’aplicació de formes: 5 passos
Programació orientada a objectes: Creació d’objectes Mètode / tècnica d’aprenentatge / ensenyament mitjançant Shape Puncher: mètode d’aprenentatge / ensenyament per a estudiants que s’inicien en la programació orientada a objectes. Aquesta és una manera de permetre'ls visualitzar i veure el procés de creació d'objectes a partir de classes. Puny gran EkTools de 2 polzades; les formes sòlides són les millors. Tros de paper o c
Sensor de visió MU de micro: bits: seguiment d'objectes: 6 passos
Sensor de visió MU Micro: bit: objectes de seguiment: Aquesta és la meva quarta guia del sensor de visió MU per al micro: bit. Aquí examinaré com fer un seguiment d'objectes amb el micro: bit i escriure les coordenades en una pantalla OLED. A les meves altres guies he vist com connectar el micro: bit al
Raspberry Pi: autònom Mars Rover amb seguiment d'objectes OpenCV: 7 passos (amb imatges)
Raspberry Pi: rover autònom de Mars amb seguiment d'objectes OpenCV: alimentat per un Raspberry Pi 3, reconeixement d'objectes CV obert, sensors d'ultrasons i motors de corrent continu. Aquest rover pot rastrejar qualsevol objecte per al qual està entrenat i moure’s en qualsevol terreny
Programació orientada a objectes: creació d'objectes Mètode / tècnica d'aprenentatge / ensenyament amb tisores: 5 passos
Programació orientada a objectes: Creació d'objectes Mètode / Tècnica d'aprenentatge / ensenyament amb tisores: Mètode d'aprenentatge / ensenyament per a estudiants que s'inicien en la programació orientada a objectes. Aquesta és una manera de permetre'ls visualitzar i veure el procés de creació d'objectes a partir de classes. Parts: 1. Tisores (ho farà qualsevol tipus). 2. Peça de paper o cartolina. 3. Marcador