Tabla de contenido:
- Paso 1: dibujar un rectángulo en el objeto reconocido
- Paso 2: trace la ruta en la que se movió el objeto
- Paso 3: Integrar ambos códigos
Video: Seguimiento de objetos Opencv: 3 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
La detección de objetos en movimiento es una técnica utilizada en la visión por computadora y el procesamiento de imágenes. Varios fotogramas consecutivos de un video se comparan mediante varios métodos para determinar si se detecta algún objeto en movimiento.
La detección de objetos en movimiento se ha utilizado para una amplia gama de aplicaciones, como videovigilancia, reconocimiento de actividad, monitoreo del estado de la carretera, seguridad aeroportuaria, monitoreo de protección a lo largo de la frontera marítima, etc.
La detección de objetos en movimiento consiste en reconocer el movimiento físico de un objeto en un lugar o región determinados. [2] Al actuar la segmentación entre los objetos en movimiento y el área o región estacionaria, el movimiento de los objetos en movimiento podría rastrearse y, por lo tanto, podría analizarse más tarde. Para lograr esto, considere que un video es una estructura construida sobre cuadros individuales, la detección de objetos en movimiento es encontrar el objetivo en movimiento en primer plano, ya sea en cada cuadro de video o solo cuando el objetivo en movimiento muestra la primera aparición en el video.
Voy a usar la combinación de Opnecv y Python para detectar y rastrear los objetos según el color.
Paso 1: dibujar un rectángulo en el objeto reconocido
si su pc no tiene python o opencv, siga los siguientes instructivos
aquí está el código de Python:
importar cv2importar numpy como np
cap = cv2. VideoCapture (0)
mientras que es cierto:
_, marco = cap.read () hsv = cv2.cvtColor (marco, 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)
(_, contornos, _) = cv2.findContours (máscara_amarilla, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE)
para contorno en contornos:
area = cv2.contourArea (contorno)
si (área> 800):
x, y, w, h = cv2.boundingRect (contorno) frame = cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 10)
cv2.imshow ("seguimiento", marco)
k = cv2.waitKey (5) y 0XFF
si k == 27: romper
cv2.destroyAllWindows ()
cap.release ()
Paso 2: trace la ruta en la que se movió el objeto
para rastrear el camino:
para i en el rango (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 (marco, center_points [i - 1], center_points , (b, g, r), 4)
Paso 3: Integrar ambos códigos
voy a integrar tanto el código
importar cv2importar numpy as np importar aleatoriamente de colecciones importar deque
cap = cv2. VideoCapture (1)
# Para realizar un seguimiento de todos los puntos donde el objeto visitó center_points = deque ()
mientras que es cierto:
# Leer y voltear marco _, marco = cap.read () marco = cv2.flip (marco, 1)
# Difumina un poco el encuadre
blur_frame = cv2. GaussianBlur (marco, (7, 7), 0)
# Convertir de formato de color BGR a HSV
hsv = cv2.cvtColor (fotograma_desenfocado, cv2. COLOR_BGR2HSV)
# Defina el rango superior e inferior del color hsv a detectar. Azul aquí
lower_blue = np.array ([100, 50, 50]) upper_blue = np.array ([140, 255, 255]) mask = cv2.inRange (hsv, lower_blue, upper_blue)
# Hacer kernel elíptico
kernel = cv2.getStructuringElement (cv2. MORPH_ELLIPSE, (15, 15))
# Morfo de apertura (erosión seguida de dilatación)
máscara = cv2.morphologyEx (máscara, cv2. MORPH_OPEN, kernel)
# Encuentra todos los contornos
contornos, jerarquía = cv2.findContours (mask.copy (), cv2. RETR_LIST, cv2. CHAIN_APPROX_SIMPLE) [- 2:]
si len (contornos)> 0:
# Encuentra el contorno más grande Big_contour = max (contours, key = cv2.contourArea)
# Encuentra el centro del contorno y dibuja un círculo relleno
momentos = cv2.moments (mayor_contour) centre_of_contour = (int (momentos ['m10'] / momentos ['m00']), int (momentos ['m01'] / momentos ['m00'])) cv2.circle (marco, centro_de_contour, 5, (0, 0, 255), -1)
# Delimita el contorno con un círculo
elipse = cv2.fitEllipse (mayor_contour) cv2.ellipse (marco, elipse, (0, 255, 255), 2)
# Guarde el centro del contorno para que dibujemos la línea siguiéndolo
center_points.appendleft (centre_of_contour)
# Dibujar una línea desde los puntos centrales del contorno
para i en el rango (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 (marco, center_points [i - 1], center_points , (b, g, r), 4)
cv2.imshow ('original', marco)
cv2.imshow ('máscara', máscara)
k = cv2.waitKey (5) y 0xFF
si k == 27: romper
cv2.destroyAllWindows ()
cap.release ()
Recomendado:
Micro: bit MU Vision Sensor - Seguimiento de objetos: 7 pasos
Micro: bit MU Vision Sensor - Seguimiento de objetos: Entonces en este instructable vamos a comenzar a programar el Smart Car que construimos en este instructable y en el que instalamos un sensor de visión MU en este instructable. Vamos a programar el micro: bit con un simple seguimiento de objetos, así que
Programación Orientada a Objetos: Creación de Objetos Aprendizaje / Método / Técnica de Enseñanza Usando Shape Puncher: 5 Pasos
Programación Orientada a Objetos: Creación de Objetos Método / Técnica de Aprendizaje / Enseñanza Usando Shape Puncher: Método de aprendizaje / enseñanza para estudiantes nuevos en la programación orientada a objetos. Esta es una forma de permitirles visualizar y ver el proceso de creación de objetos a partir de clases. Partes: 1. Punzón grande EkTools de 2 pulgadas; las formas sólidas son las mejores 2. Trozo de papel o c
Micro: bit MU Vision Sensor - Seguimiento de objetos: 6 pasos
Micro: bit MU Vision Sensor - Seguimiento de objetos: esta es mi cuarta guía para el sensor de visión MU para micro: bit. Aquí explicaré cómo rastrear objetos con el micro: bit y escribir las coordenadas en una pantalla OLED. En mis otras guías he analizado cómo conectar el micro: bit al
Kits de coche de seguimiento de robot inteligente de bricolaje Seguimiento de coche fotosensible: 7 pasos
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTPuedes comprar desde el robot de seguimiento carTheoryLM393 chip compara los dos fotorresistores, cuando hay un fotorresistor LED en BLANCO, el lado del motor se detendrá inmediatamente, el otro lado del motor girar, de modo que
Raspberry Pi - Mars Rover autónomo con seguimiento de objetos OpenCV: 7 pasos (con imágenes)
Raspberry Pi - Mars Rover autónomo con seguimiento de objetos OpenCV: impulsado por una Raspberry Pi 3, reconocimiento de objetos Open CV, sensores ultrasónicos y motores de CC con engranajes. Este rover puede rastrear cualquier objeto para el que está entrenado y moverse en cualquier terreno