Cálculo de distancia usando Ultralytics YOLO26#
¿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 fotograma de video. En el caso de Ultralytics YOLO26, se emplea el centroide de la bounding box para calcular la distancia de los bounding boxes resaltados por el usuario.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Visuales#
| Cálculo de distancia usando Ultralytics YOLO26 |
|---|
![]() |
Ventajas del cálculo de distancia#
- Precision de localización: Mejora el posicionamiento espacial preciso en tareas de computer vision.
- Estimación de tamaño: Permite estimar el tamaño de un objeto 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 vehículos autónomos y 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 dentro del entorno supervisado.
Cálculo de distancia
- Haz clic en dos cajas delimitadoras cualesquiera 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 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 en 2D, que carecen de información de profundidad.
Calcula distancias con YOLO26#
La solución DistanceCalculation rastrea objetos a través de fotogramas y mide la distancia euclidiana, en píxeles, entre los centroides de dos bounding boxes cualesquiera que selecciones con el ratón. Ejecuta el ejemplo a continuación, luego haz clic izquierdo en dos objetos para trazar la línea de conexión y leer la distancia; haz clic derecho para borrar tu selección.
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 windowsArgumentos 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 YOLO de Ultralytics. |
line_width | int | 2 | Grosor de línea para las cajas, puntos clave y recuentos que dibuja la solución. |
verbose | bool | True | Habilita el registro por fotograma de la solución sobre la forma de entrada, los recuentos de clases y la velocidad de procesamiento. La llamada de seguimiento en sí siempre es silenciosa. |
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 que se va a utilizar. Opciones integradas: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | Establece el umbral de confianza para las detecciones; valores más bajos permiten el seguimiento de más objetos, pero pueden incluir falsos positivos. |
iou | float | 0.7 | Establece el umbral de Intersection over Union (IoU) para filtrar detecciones superpuestas. |
classes | list | None | Filtra los resultados por índice de clase. Por ejemplo, classes=[0, 2, 3] solo realiza el seguimiento de las clases especificadas. |
device | str | None | Especifica el dispositivo para la inferencia (por ejemplo, cpu, cuda:0 o 0). Permite a los usuarios seleccionar entre CPU, una GPU específica u otros dispositivos de computación 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. Es útil para obtener retroalimentación visual inmediata durante el desarrollo o las pruebas. |
show_conf | bool | True | Muestra la puntuación de confianza para cada detección junto a la etiqueta. Proporciona información sobre la certeza del modelo para cada detección. |
show_labels | bool | True | Muestra las etiquetas para cada detección en la salida visual. Proporciona una comprensión inmediata de los objetos detectados. |
Detalles de implementación#
La clase DistanceCalculation funciona rastreando objetos a través de fotogramas de video y calculando la distancia euclidiana entre los centroides de los bounding boxes seleccionados. Cuando haces clic en dos objetos, la solución:
- Extrae los centroides (puntos centrales) de las cajas delimitadoras 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, lo que permite a los usuarios seleccionar objetos y borrar selecciones según sea necesario. El método process gestiona el procesamiento fotograma por fotograma, el rastreo de objetos y el cálculo de distancias.
Aplicaciones#
El cálculo de distancia con YOLO26 tiene numerosas aplicaciones prácticas:
- Análisis 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 el espaciado de los vehículos y detecta el seguimiento demasiado cercano
- Análisis deportivo: Calcula las distancias entre los jugadores, el balón y posiciones clave del campo
- Asistencia sanitaria: Garantiza un distanciamiento adecuado en las zonas de espera y supervisa el movimiento de los pacientes
- Robótica: Permite a los robots mantener las distancias adecuadas respecto a obstáculos y personas
FAQ#
Para calcular distancias entre objetos utilizando Ultralytics YOLO26, necesitas identificar los centroides de los bounding boxes de los objetos detectados. Este proceso implica inicializar la clase
DistanceCalculationdel módulosolutionsde Ultralytics y utilizar las salidas de rastreo del modelo para calcular las distancias.Usar el cálculo de distancia con Ultralytics YOLO26 ofrece varias ventajas:
- Precisión de localización: Proporciona un posicionamiento espacial preciso para los objetos.
- Estimación de 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 en 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 sin problemas con otras soluciones de YOLO26 como el object tracking y la estimación de velocidad.
Sí, puedes realizar cálculos de distancia en transmisiones de video en tiempo real con Ultralytics YOLO26. El proceso implica capturar fotogramas de video utilizando OpenCV, ejecutar la object detection de YOLO26 y utilizar la clase
DistanceCalculationpara calcular las distancias entre objetos en fotogramas sucesivos. Para una implementación detallada, consulta el ejemplo de transmisión de video.Para eliminar puntos trazados durante el cálculo de distancia con Ultralytics YOLO26, puedes usar un clic derecho del ratón. Esta acción borrará todos los puntos que hayas trazado. Para más detalles, consulta la sección de notas bajo el ejemplo de cálculo de distancia.
Los argumentos clave para inicializar la clase
DistanceCalculationen Ultralytics YOLO26 incluyen:model: Ruta al archivo del modelo YOLO26.tracker: Algoritmo de seguimiento a utilizar (Solutions usa por defectobotsort.yaml).conf: Umbral de confianza para las detecciones.show: Indicador para mostrar la salida.
Para ver una lista exhaustiva y los valores predeterminados, consulta los argumentos de DistanceCalculation.
