Link to this sectionCálculo de distancia usando Ultralytics YOLO26#
Link to this section¿Qué es el cálculo de distancia?#
El cálculo de distancia es el proceso de medir el espacio entre dos objetos detectados dentro de una imagen o un fotograma de vídeo. En el caso de Ultralytics YOLO26, se emplea el centroide de la bounding box para calcular la distancia de las bounding boxes seleccionadas por el usuario.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Link to this sectionVisualizaciones#
| Cálculo de distancia usando Ultralytics YOLO26 |
|---|
![]() |
Link to this sectionVentajas del cálculo de distancia#
- Precisión de localización: Mejora el posicionamiento espacial preciso en tareas de computer vision.
- Estimación de tamaño: Permite estimar el tamaño de los objetos para una mejor comprensión contextual.
- Comprensión de escenas: Mejora la comprensión de escenas 3D para una mejor toma de decisiones en aplicaciones como autonomous vehicles y sistemas de vigilancia.
- Prevención de colisiones: Permite a los sistemas detectar posibles colisiones monitorizando las distancias entre objetos en movimiento.
- Análisis espacial: Facilita el análisis de las relaciones e interacciones entre objetos dentro del entorno monitorizado.
Cálculo de distancia
- Haz clic en dos bounding boxes con el botón izquierdo del ratón para calcular la distancia.
- Usa el botón derecho del ratón para borrar todos los puntos dibujados.
- Haz clic con el botón izquierdo en cualquier parte del fotograma para añadir nuevos puntos.
La distancia es una estimación
La distancia es una estimación y puede no ser totalmente precisa porque se calcula utilizando datos 2D, lo que carece de información de profundidad.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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 = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # path to the YOLO26 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windowsLink to this sectionArgumentos de DistanceCalculation()#
Aquí tienes una tabla con los argumentos de DistanceCalculation:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
model | str | None | Ruta a un archivo de modelo de Ultralytics YOLO. |
También puedes hacer uso de varios argumentos de track en la solución DistanceCalculation.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Especifica el algoritmo de seguimiento a utilizar, por ejemplo, bytetrack.yaml o botsort.yaml. |
conf | float | 0.1 | Establece el umbral de confianza para las detecciones; los valores más bajos permiten rastrear más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de Intersection over Union (IoU) para filtrar detecciones solapadas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo rastrea las clases especificadas. |
verbose | bool | True | Controla la visualización de los resultados de seguimiento, proporcionando una salida visual de los objetos rastreados. |
device | str | None | Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios elegir entre CPU, una GPU específica u otros dispositivos de cálculo para la ejecución del modelo. |
Además, están disponibles los siguientes argumentos de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si es True, muestra las imágenes o vídeos anotados en una ventana. Útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
line_width | int or None | None | Especifica el grosor de línea de las bounding boxes. Si es None, el grosor de línea se ajusta automáticamente en función del tamaño de la imagen. Proporciona personalización visual para mayor claridad. |
show_conf | bool | True | Muestra la puntuación de confianza para cada detección junto a la etiqueta. Ofrece información sobre la certeza del modelo para cada detección. |
show_labels | bool | True | Muestra las etiquetas de cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados. |
Link to this sectionDetalles de la implementación#
La clase DistanceCalculation funciona rastreando objetos a través de fotogramas de vídeo y calculando la distancia euclidiana entre los centroides de las bounding boxes seleccionadas. Cuando haces clic en dos objetos, la solución:
- Extrae los centroides (puntos centrales) de las bounding boxes seleccionadas
- Calcula la distancia euclidiana entre estos centroides en píxeles
- Muestra la distancia en el fotograma con una línea que conecta los objetos
La implementación utiliza el método mouse_event_for_distance para gestionar las interacciones del ratón, permitiendo a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El método process maneja el procesamiento fotograma a fotograma, rastreando objetos y calculando distancias.
Link to this sectionAplicaciones#
El cálculo de distancia con YOLO26 tiene numerosas aplicaciones prácticas:
- Analítica minorista: Mide la proximidad del cliente a los productos y analiza la eficacia de la distribución de la tienda
- Seguridad industrial: Monitoriza las distancias de seguridad entre los trabajadores y la maquinaria
- Gestión del tráfico: Analiza el espaciado entre vehículos y detecta el seguimiento demasiado cercano
- Análisis deportivo: Calcula las distancias entre los jugadores, el balón y las posiciones clave del campo
- Atención sanitaria: Asegura una distancia adecuada en las zonas de espera y monitoriza el movimiento de los pacientes
- Robótica: Permite a los robots mantener distancias adecuadas respecto a obstáculos y personas
Link to this sectionPreguntas frecuentes#
Link to this section¿Cómo calculo las distancias entre objetos usando Ultralytics YOLO26?#
Para calcular las distancias entre objetos usando Ultralytics YOLO26, necesitas identificar los centroides de las bounding boxes de los objetos detectados. Este proceso implica inicializar la clase DistanceCalculation del módulo solutions de Ultralytics y utilizar las salidas de seguimiento del modelo para calcular las distancias.
Link to this section¿Cuáles son las ventajas de utilizar el cálculo de distancia con Ultralytics YOLO26?#
El uso del cálculo de distancia con Ultralytics YOLO26 ofrece varias ventajas:
- Precisión de localización: Proporciona un posicionamiento espacial preciso de los objetos.
- Estimación de tamaño: Ayuda a estimar los tamaños físicos, lo que contribuye a una mejor comprensión contextual.
- Comprensión de escenas: Mejora la comprensión de escenas 3D, ayudando a mejorar la toma de decisiones en aplicaciones como la conducción autónoma y la vigilancia.
- Procesamiento en tiempo real: Realiza cálculos sobre la marcha, lo que lo hace adecuado para el análisis de vídeo en directo.
- Capacidades de integración: Funciona a la perfección con otras soluciones de YOLO26 como el object tracking y la speed estimation.
Link to this section¿Puedo realizar el cálculo de distancia en transmisiones de vídeo en tiempo real con Ultralytics YOLO26?#
Sí, puedes realizar el cálculo de distancia en transmisiones de vídeo en tiempo real con Ultralytics YOLO26. El proceso implica capturar fotogramas de vídeo utilizando OpenCV, ejecutar la object detection de YOLO26 y usar la clase DistanceCalculation para calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de transmisión de vídeo.
Link to this section¿Cómo borro los puntos dibujados durante el cálculo de distancia usando Ultralytics YOLO26?#
Para borrar los puntos dibujados durante el cálculo de distancia con Ultralytics YOLO26, puedes hacer clic con 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.
Link to this section¿Cuáles son los argumentos clave para inicializar la clase DistanceCalculation en Ultralytics YOLO26?#
Los argumentos clave para inicializar la clase DistanceCalculation en Ultralytics YOLO26 incluyen:
model: Ruta al archivo del modelo YOLO26.tracker: Algoritmo de seguimiento a utilizar (el predeterminado es 'botsort.yaml').conf: Umbral de confianza para las detecciones.show: Flag para mostrar la salida.
Para obtener una lista exhaustiva y los valores predeterminados, consulta los argumentos de DistanceCalculation.
