Saltar al contenido

Cálculo de la distancia mediante Ultralytics YOLOv8

¿Qué es el cálculo de la distancia?

La medición de la distancia entre dos objetos se conoce como cálculo de la distancia dentro de un espacio determinado. En el caso de Ultralytics YOLOv8se emplea el centroide del cuadro delimitador para calcular la distancia de los cuadros delimitadores resaltados por el usuario.



Observa: Cálculo de la distancia mediante Ultralytics YOLOv8

Visuales

Cálculo de la distancia mediante Ultralytics YOLOv8
Ultralytics YOLOv8 Cálculo de la distancia

¿Ventajas del cálculo de la distancia?

  • Precisión de localización: Mejora la precisión del posicionamiento espacial en tareas de visión por ordenador.
  • Size Estimation: Allows estimation of object size for better contextual understanding.
Cálculo de la distancia
  • Haz clic en dos cuadros delimitadores cualesquiera con el botón izquierdo del ratón para calcular la distancia

Cálculo de distancias mediante YOLOv8 Ejemplo

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

# Video writer
video_writer = cv2.VideoWriter("distance_calculation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init distance-calculation obj
dist_obj = solutions.DistanceCalculation(names=names, view_img=True)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    tracks = model.track(im0, persist=True, show=False)
    im0 = dist_obj.start_process(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
Nota
  • Si haces clic con el botón derecho del ratón, se borrarán todos los puntos dibujados
  • Puedes utilizar el botón izquierdo del ratón para dibujar puntos
Distance is Estimate
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data, which lacks information about the object's depth.

Argumentos DistanceCalculation()

Name Type Default Descripción
names dict None Diccionario de nombres de clases.
view_img bool False Bandera para indicar si se debe mostrar el flujo de vídeo.
line_thickness int 2 Grosor de las líneas dibujadas en la imagen.
line_color tuple (255, 255, 0) Color de las líneas dibujadas en la imagen (formato BGR).
centroid_color tuple (255, 0, 255) Color de los centroides dibujados (formato BGR).

Argumentos model.track

Argumento Tipo Por defecto Descripción
source str None Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yaml o botsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

PREGUNTAS FRECUENTES

¿Cómo calculo distancias entre objetos utilizando Ultralytics YOLOv8 ?

Para calcular distancias entre objetos utilizando Ultralytics YOLOv8tienes que identificar los centroides de los recuadros delimitadores de los objetos detectados. Este proceso implica inicializar el DistanceCalculation clase de Ultralytics' solutions y utilizando las salidas de seguimiento del modelo para calcular las distancias. Puedes consultar la implementación en el ejemplo de cálculo de distancia.

¿Cuáles son las ventajas de utilizar el cálculo de distancias con Ultralytics YOLOv8 ?

Utilizar el cálculo de distancias con Ultralytics YOLOv8 ofrece varias ventajas:

  • Precisión de localización: Proporciona un posicionamiento espacial preciso de los objetos.
  • Estimación del tamaño: Ayuda a estimar los tamaños físicos, contribuyendo a una mejor comprensión contextual.
  • Comprensión de escenas: Mejora la comprensión de escenas 3D, contribuyendo a mejorar la toma de decisiones en aplicaciones como la conducción autónoma y la vigilancia.

¿Puedo realizar cálculos de distancia en secuencias de vídeo en tiempo real con Ultralytics YOLOv8 ?

Sí, puedes realizar el cálculo de distancias en secuencias de vídeo en tiempo real con Ultralytics YOLOv8 . El proceso consiste en capturar fotogramas de vídeo utilizando OpenCV, ejecutar la detección de objetos YOLOv8 y utilizar la función DistanceCalculation para calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de flujo de vídeo.

¿Cómo borro los puntos dibujados durante el cálculo de la distancia utilizando Ultralytics YOLOv8 ?

Para borrar los puntos dibujados durante el cálculo de la distancia con Ultralytics YOLOv8 , puedes utilizar el botón derecho del ratón. Esta acción borrará todos los puntos que hayas dibujado. Para más detalles, consulta la sección de notas bajo el ejemplo de cálculo de distancia.

¿Cuáles son los argumentos clave para inicializar la clase CálculoDistancia en Ultralytics YOLOv8 ?

Los argumentos clave para inicializar la DistanceCalculation clase en Ultralytics YOLOv8 incluyen:

  • names: Diccionario que asigna índices de clase a nombres de clase.
  • view_img: Bandera para indicar si se debe mostrar el flujo de vídeo.
  • line_thickness: Grosor de las líneas dibujadas en la imagen.
  • line_color: Color de las líneas dibujadas en la imagen (formato BGR).
  • centroid_color: Color de los centroides (formato BGR).

Para obtener una lista exhaustiva y los valores por defecto, consulta los argumentos de CálculoDistancia.


📅 Created 8 months ago ✏️ Updated 6 days ago

Comentarios