Vai al contenuto

Calcolo della distanza utilizzando Ultralytics YOLOv8 🚀

Che cos'è il calcolo della distanza?

La misurazione della distanza tra due oggetti è nota come calcolo della distanza all'interno di uno spazio specifico. Nel caso di Ultralytics YOLOv8il centroide del rettangolo di selezione viene utilizzato per calcolare la distanza dei rettangoli di selezione evidenziati dall'utente.



Guarda: Calcolo della distanza con Ultralytics YOLOv8

Immagini

Calcolo della distanza con Ultralytics YOLOv8
Ultralytics YOLOv8 Calcolo della distanza

Vantaggi del calcolo della distanza?

  • Precisione di localizzazione: Migliora l'accuratezza del posizionamento spaziale nelle attività di computer vision.
  • Stima delle dimensioni: Permette di stimare le dimensioni fisiche per una migliore comprensione del contesto.
  • Comprensione della scena: Contribuisce alla comprensione 3D dell'ambiente per migliorare il processo decisionale.
Calcolo della distanza
  • Clicca su due caselle di delimitazione qualsiasi con il tasto sinistro del mouse per calcolare la distanza

Calcolo della distanza con YOLOv8 Esempio

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
  • Il tasto destro del mouse cancella tutti i punti disegnati
  • Il clic sinistro del mouse può essere utilizzato per disegnare punti

Argomenti DistanceCalculation()

Name Type Default Descrizione
names dict None Dizionario che mappa gli indici delle classi con i nomi delle classi.
pixels_per_meter int 10 Fattore di conversione da pixel a metri.
view_img bool False Flag per indicare se il flusso video deve essere visualizzato.
line_thickness int 2 Spessore delle linee disegnate sull'immagine.
line_color tuple (255, 255, 0) Colore delle linee disegnate sull'immagine (formato BGR).
centroid_color tuple (255, 0, 255) Colore dei centroidi disegnati (formato BGR).

Argomenti model.track

Nome Tipo Predefinito Descrizione
source im0 None directory di origine per le immagini o i video
persist bool False persistenza dei brani tra i fotogrammi
tracker str botsort.yaml Metodo di tracciamento 'bytetrack' o 'botsort'
conf float 0.3 Soglia di fiducia
iou float 0.5 Soglia IOU
classes list None filtrare i risultati per classe, ad esempio classi=0 o classi=[0,2,3].
verbose bool True Visualizza i risultati del tracciamento dell'oggetto


Created 2024-01-05, Updated 2024-06-10
Authors: glenn-jocher (6), IvorZhu331 (1), RizwanMunawar (5), AyushExel (1)

Commenti