Cálculo de distancias con Ultralytics YOLO26#
¿Qué es el cálculo de distancias?#
El cálculo de distancias es el proceso de medir el espacio entre dos objetos detectados en una imagen o fotograma de vídeo. En el caso de Ultralytics YOLO26, se utiliza el centroide de la caja delimitadora para calcular la distancia de las cajas delimitadoras resaltadas por el usuario.
Ver: Cómo calcular en píxeles la distancia entre objetos detectados con Ultralytics YOLO 🚀
Elementos visuales#
| Cálculo de distancias con Ultralytics YOLO26 |
|---|
![]() |
Ventajas del cálculo de distancias#
- Precisión de localización: Mejora la precisión del posicionamiento espacial en tareas de visión artificial.
- Estimación del tamaño: Permite estimar el tamaño de los objetos para comprender mejor el contexto.
- Comprensión de la escena: Mejora la comprensión de escenas 3D para tomar mejores decisiones en aplicaciones como los vehículos autónomos y los sistemas de vigilancia.
- Prevención de colisiones: Permite a los sistemas detectar posibles colisiones mediante la supervisión de las distancias entre objetos en movimiento.
- Análisis espacial: Facilita el análisis de las relaciones e interacciones entre objetos en el entorno supervisado.
Cálculo de distancias
- Haz clic con el botón izquierdo del ratón en dos cajas delimitadoras cualesquiera para calcular la distancia.
- Haz clic con el botón derecho del ratón para eliminar todos los puntos dibujados.
La distancia es una estimación
La distancia es una estimación y puede no ser totalmente precisa, ya que se calcula a partir de datos 2D, que carecen de información de profundidad.
Calcula distancias con YOLO26#
La solución DistanceCalculation sigue objetos a lo largo de los fotogramas y mide en píxeles la distancia euclídea entre los centroides de dos cajas delimitadoras cualesquiera que selecciones con el ratón. Ejecuta el ejemplo siguiente y, a continuación, haz clic con el botón izquierdo en dos objetos para dibujar la línea que los une y ver la distancia; haz clic con el botón derecho para borrar la selección.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Escritor de vídeo
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))
# Inicializa el objeto de cálculo de distancias
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # ruta al archivo del modelo YOLO26.
show=True, # mostrar el resultado
)
# Procesar el vídeo
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) # accede a la salida
video_writer.write(results.plot_im) # escribe el fotograma procesado.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # cerrar todas las ventanas abiertasArgumentos 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 Ultralytics YOLO. |
line_width | int | 2 | Grosor de línea de los cuadros, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Activa el registro por fotograma de la forma de entrada, los recuentos por clase y la velocidad de procesamiento de la solución. La llamada de seguimiento en sí siempre es silenciosa. |
También puedes utilizar varios argumentos de track en la solución DistanceCalculation.
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | Especifica el algoritmo de seguimiento que se va a usar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza de las detecciones; los valores más bajos permiten seguir más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de intersección sobre unión (IoU) para filtrar las detecciones solapadas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo sigue las clases especificadas. |
device | str | None | Especifica el dispositivo para la inferencia (p. ej., cpu, cuda:0 o 0). Permite elegir entre CPU, una GPU concreta u otros dispositivos de cálculo para ejecutar el modelo. |
imgsz | int or tuple | 640 | Tamaño de imagen de destino para la inferencia: un entero para una imagen cuadrada o una pareja (height, width). Las dimensiones se ajustan al stride del modelo. |
max_det | int | 300 | Número máximo de detecciones que se conservan por fotograma antes del seguimiento, lo que limita los objetos que procesa una solución en escenas densas. |
quantize | int or str | None | Precisión de inferencia: 16 (FP16) o 32/sin definir (FP32) para modelos de PyTorch y TorchScript; los demás formatos calculan con la precisión que determinen su artefacto y su entorno de ejecución. Sustituye a la opción obsoleta half. |
Además, están disponibles los siguientes argumentos de visualización:
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
show | bool | False | Si True, muestra las imágenes o los vídeos anotados en una ventana. Es útil para obtener información visual inmediata durante el desarrollo o las pruebas. |
show_conf | bool | True | Muestra la puntuación de confianza de cada detección junto a su etiqueta. Permite conocer el grado de certeza del modelo para cada detección. |
show_labels | bool | True | Muestra etiquetas para cada detección en la salida visual. Facilita la identificación inmediata de los objetos detectados. |
Detalles de implementación#
La clase DistanceCalculation funciona siguiendo objetos a lo largo de los fotogramas de vídeo y calculando la distancia euclídea entre los centroides de las cajas delimitadoras seleccionadas. Cuando haces clic en dos objetos, la solución:
- Extrae los centroides (puntos centrales) de las cajas delimitadoras seleccionadas
- Calcula en píxeles la distancia euclídea entre estos centroides
- Muestra la distancia en el fotograma con una línea que une los objetos
La implementación utiliza el método mouse_event_for_distance para gestionar las interacciones con el ratón, lo que permite a los usuarios seleccionar objetos y borrar las selecciones cuando sea necesario. El método process se encarga del procesamiento fotograma a fotograma, del seguimiento de objetos y del cálculo de distancias.
Aplicaciones#
El cálculo de distancias con YOLO26 tiene numerosas aplicaciones prácticas:
- Analítica del comercio minorista: Mide la proximidad de los clientes a los productos y analiza la eficacia de la distribución de la tienda
- Seguridad industrial: Supervisa las distancias de seguridad entre los trabajadores y la maquinaria
- Gestión del tráfico: Analiza la separación entre vehículos y detecta cuándo circulan demasiado cerca unos de otros
- Análisis deportivo: Calcula las distancias entre los jugadores, el balón y las posiciones clave del campo
- Sanidad: Garantiza que se mantengan las distancias adecuadas en las salas de espera y supervisa los movimientos de los pacientes
- Robótica: Permite que los robots mantengan distancias adecuadas con respecto a los obstáculos y las personas
Preguntas frecuentes#
Para calcular las distancias entre objetos con Ultralytics YOLO26, tienes que identificar los centroides de las cajas delimitadoras de los objetos detectados. Este proceso consiste en inicializar la clase
DistanceCalculationdel módulosolutionsde Ultralytics y utilizar las salidas de seguimiento del modelo para calcular las distancias.Calcular distancias con Ultralytics YOLO26 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 y contribuye a comprender mejor el contexto.
- Comprensión de la escena: Mejora la comprensión de escenas 3D y ayuda a tomar mejores decisiones en aplicaciones como la conducción autónoma y la vigilancia.
- Procesamiento en tiempo real: Realiza cálculos sobre la marcha, por lo que resulta adecuado para analizar vídeo en directo.
- Capacidades de integración: Funciona a la perfección con otras soluciones de YOLO26, como el seguimiento de objetos y la estimación de velocidad.
Sí, puedes calcular distancias en secuencias de vídeo en tiempo real con Ultralytics YOLO26. El proceso consiste en capturar fotogramas de vídeo con OpenCV, ejecutar la detección de objetos de YOLO26 y utilizar la clase
DistanceCalculationpara calcular las distancias entre objetos en fotogramas consecutivos. Para ver una implementación detallada, consulta el ejemplo de secuencia de vídeo.Para eliminar los puntos dibujados durante el cálculo de distancias 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 obtener más detalles, consulta la sección de notas del ejemplo de cálculo de distancias.
Los argumentos clave para inicializar la clase
DistanceCalculationen Ultralytics YOLO26 son:model: Ruta al archivo del modelo YOLO26.tracker: Algoritmo de seguimiento que se utilizará (las soluciones usantracktrack.yamlde forma predeterminada).conf: Umbral de confianza para las detecciones.show: Indicador para mostrar la salida.
Para consultar la lista completa y los valores predeterminados, ve los argumentos de DistanceCalculation.
