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 |
---|
¿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.