Vai al contenuto

Calcolo della distanza con 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 dei 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

DOMANDE FREQUENTI

Come faccio a calcolare le distanze tra gli oggetti utilizzando Ultralytics YOLOv8 ?

Per calcolare le distanze tra gli oggetti utilizzando Ultralytics YOLOv8è necessario identificare i centroidi del rettangolo di selezione degli oggetti rilevati. Questo processo comporta l'inizializzazione dei parametri DistanceCalculation da Ultralytics' solutions e utilizzando i risultati di tracciamento del modello per calcolare le distanze. Puoi consultare l'implementazione nella sezione esempio di calcolo della distanza.

Quali sono i vantaggi di utilizzare il calcolo della distanza con Ultralytics YOLOv8 ?

L'utilizzo del calcolo della distanza con Ultralytics YOLOv8 offre diversi vantaggi:

  • Precisione di localizzazione: Fornisce un posizionamento spaziale preciso per gli oggetti.
  • Stima delle dimensioni: Aiuta a stimare le dimensioni fisiche, contribuendo a una migliore comprensione del contesto.
  • Comprensione della scena: Migliora la comprensione della scena 3D, favorendo un migliore processo decisionale in applicazioni come la guida autonoma e la sorveglianza.

È possibile eseguire il calcolo della distanza nei flussi video in tempo reale con Ultralytics YOLOv8 ?

Sì, puoi eseguire il calcolo della distanza nei flussi video in tempo reale con Ultralytics YOLOv8 . Il processo prevede l'acquisizione dei fotogrammi video con OpenCV, l'esecuzione del rilevamento degli oggetti YOLOv8 e l'utilizzo del programma di calcolo della distanza. DistanceCalculation per calcolare le distanze tra gli oggetti in fotogrammi successivi. Per un'implementazione dettagliata, consulta la sezione esempio di flusso video.

Come posso eliminare i punti disegnati durante il calcolo della distanza utilizzando Ultralytics YOLOv8 ?

Per cancellare i punti disegnati durante il calcolo della distanza con Ultralytics YOLOv8 , puoi usare il tasto destro del mouse. Questa azione cancellerà tutti i punti disegnati. Per maggiori dettagli, consulta la sezione delle note sotto l'esempio di calcolo della distanza.

Quali sono gli argomenti chiave per inizializzare la classe DistanceCalculation in Ultralytics YOLOv8 ?

Gli argomenti chiave per l'inizializzazione di DistanceCalculation in Ultralytics YOLOv8 includono:

  • names: Dizionario che mappa gli indici delle classi con i nomi delle classi.
  • pixels_per_meter: Fattore di conversione da pixel a metri.
  • view_img: Flag per indicare se il flusso video deve essere visualizzato.
  • line_thickness: Spessore delle linee disegnate sull'immagine.
  • line_color: Colore delle linee disegnate sull'immagine (formato BGR).
  • centroid_color: Colore dei centroidi (formato BGR).

Per un elenco esaustivo e per i valori predefiniti, consulta gli argomenti di DistanceCalculation.



Creato 2024-01-05, Aggiornato 2024-07-14
Autori: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Commenti