Link to this sectionCalcolo della distanza con Ultralytics YOLO26#
Link to this sectionCos'è il calcolo della distanza?#
Il calcolo della distanza è il processo di misurazione dello spazio tra due oggetti rilevati all'interno di un'immagine o di un fotogramma video. Nel caso di Ultralytics YOLO26, il centroide del bounding box viene utilizzato per calcolare la distanza per i bounding box evidenziati dall'utente.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Link to this sectionElementi visivi#
| Calcolo della distanza con Ultralytics YOLO26 |
|---|
![]() |
Link to this sectionVantaggi del calcolo della distanza#
- Precisione di localizzazione: Migliora l'accuratezza del posizionamento spaziale nelle attività di computer vision.
- Stima delle dimensioni: Consente di stimare le dimensioni dell'oggetto per una migliore comprensione contestuale.
- Comprensione della scena: Migliora la comprensione della scena 3D per un migliore processo decisionale in applicazioni come i veicoli autonomi e i sistemi di sorveglianza.
- Prevenzione delle collisioni: Consente ai sistemi di rilevare potenziali collisioni monitorando le distanze tra gli oggetti in movimento.
- Analisi spaziale: Facilita l'analisi delle relazioni e delle interazioni tra gli oggetti all'interno dell'ambiente monitorato.
Calcolo della distanza
- Fai clic su due bounding box qualsiasi con il tasto sinistro del mouse per calcolare la distanza.
- Usa il tasto destro del mouse per eliminare tutti i punti tracciati.
- Fai clic con il tasto sinistro ovunque nel fotogramma per aggiungere nuovi punti.
La distanza è una stima
La distanza è una stima e potrebbe non essere del tutto accurata perché viene calcolata utilizzando dati 2D, che mancano di informazioni sulla profondità.
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 windowsLink to this sectionArgomenti di DistanceCalculation()#
Ecco una tabella con gli argomenti di DistanceCalculation:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
model | str | None | Percorso verso un file del modello Ultralytics YOLO. |
Puoi anche utilizzare vari argomenti di track nella soluzione DistanceCalculation.
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
tracker | str | 'botsort.yaml' | Specifica l'algoritmo di tracciamento da utilizzare. Opzioni integrate: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.1 | Imposta la soglia di confidenza per i rilevamenti; valori più bassi consentono di tracciare più oggetti ma possono includere falsi positivi. |
iou | float | 0.7 | Imposta la soglia di Intersection over Union (IoU) per filtrare i rilevamenti sovrapposti. |
classes | list | None | Filtra i risultati per indice di classe. Ad esempio, classes=[0, 2, 3] traccia solo le classi specificate. |
verbose | bool | True | Controlla la visualizzazione dei risultati di tracciamento, fornendo un output visivo degli oggetti tracciati. |
device | str | None | Specifica il dispositivo per l'inferenza (ad esempio, cpu, cuda:0 o 0). Consente agli utenti di scegliere tra CPU, una GPU specifica o altri dispositivi di calcolo per l'esecuzione del modello. |
Inoltre, sono disponibili i seguenti argomenti di visualizzazione:
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
show | bool | False | Se True, visualizza le immagini o i video annotati in una finestra. Utile per un feedback visivo immediato durante lo sviluppo o il test. |
line_width | int or None | None | Specifica la larghezza della linea dei bounding box. Se None, la larghezza della linea viene regolata automaticamente in base alla dimensione dell'immagine. Fornisce personalizzazione visiva per chiarezza. |
show_conf | bool | True | Mostra il punteggio di confidenza per ogni rilevamento accanto all'etichetta. Fornisce informazioni sulla certezza del modello per ogni rilevamento. |
show_labels | bool | True | Mostra le etichette per ogni rilevamento nell'output visivo. Offre una comprensione immediata degli oggetti rilevati. |
Link to this sectionDettagli dell'implementazione#
La classe DistanceCalculation funziona tracciando gli oggetti attraverso i fotogrammi video e calcolando la distanza euclidea tra i centroidi dei bounding box selezionati. Quando fai clic su due oggetti, la soluzione:
- Estrae i centroidi (punti centrali) dei bounding box selezionati
- Calcola la distanza euclidea tra questi centroidi in pixel
- Visualizza la distanza sul fotogramma con una linea di collegamento tra gli oggetti
L'implementazione utilizza il metodo mouse_event_for_distance per gestire le interazioni con il mouse, consentendo agli utenti di selezionare oggetti e cancellare le selezioni secondo necessità. Il metodo process gestisce l'elaborazione fotogramma per fotogramma, tracciando gli oggetti e calcolando le distanze.
Link to this sectionApplicazioni#
Il calcolo della distanza con YOLO26 ha numerose applicazioni pratiche:
- Analisi retail: Misura la vicinanza dei clienti ai prodotti e analizza l'efficacia del layout del negozio
- Sicurezza industriale: Monitora le distanze di sicurezza tra lavoratori e macchinari
- Gestione del traffico: Analizza la spaziatura tra i veicoli e rileva l'accodamento
- Analisi sportiva: Calcola le distanze tra i giocatori, la palla e le posizioni chiave sul campo
- Sanità: Assicura il corretto distanziamento nelle aree di attesa e monitora il movimento dei pazienti
- Robotica: Consente ai robot di mantenere distanze appropriate da ostacoli e persone
Link to this sectionFAQ#
Link to this sectionCome calcolo le distanze tra gli oggetti utilizzando Ultralytics YOLO26?#
Per calcolare le distanze tra gli oggetti utilizzando Ultralytics YOLO26, devi identificare i centroidi dei bounding box degli oggetti rilevati. Questo processo prevede l'inizializzazione della classe DistanceCalculation dal modulo solutions di Ultralytics e l'utilizzo degli output di tracking del modello per calcolare le distanze.
Link to this sectionQuali sono i vantaggi dell'utilizzo del calcolo della distanza con Ultralytics YOLO26?#
L'utilizzo del calcolo della distanza con Ultralytics YOLO26 offre diversi vantaggi:
- Precisione di localizzazione: Fornisce un posizionamento spaziale accurato per gli oggetti.
- Stima delle dimensioni: Aiuta a stimare le dimensioni fisiche, contribuendo a una migliore comprensione contestuale.
- Comprensione della scena: Migliora la comprensione della scena 3D, aiutando a migliorare il processo decisionale in applicazioni come la guida autonoma e la sorveglianza.
- Elaborazione in tempo reale: Esegue calcoli al volo, rendendolo adatto per l'analisi video dal vivo.
- Capacità di integrazione: Funziona perfettamente con altre soluzioni YOLO26 come il tracciamento degli oggetti e la stima della velocità.
Link to this sectionPosso eseguire il calcolo della distanza in flussi video in tempo reale con Ultralytics YOLO26?#
Sì, puoi eseguire il calcolo della distanza in flussi video in tempo reale con Ultralytics YOLO26. Il processo prevede l'acquisizione di fotogrammi video utilizzando OpenCV, l'esecuzione del rilevamento di oggetti con YOLO26 e l'utilizzo della classe DistanceCalculation per calcolare le distanze tra gli oggetti nei fotogrammi successivi. Per un'implementazione dettagliata, vedi l'esempio di flusso video.
Link to this sectionCome elimino i punti tracciati durante il calcolo della distanza utilizzando Ultralytics YOLO26?#
Per eliminare i punti tracciati durante il calcolo della distanza con Ultralytics YOLO26, puoi utilizzare un clic destro del mouse. Questa azione cancellerà tutti i punti che hai tracciato. Per maggiori dettagli, fai riferimento alla sezione delle note sotto l'esempio di calcolo della distanza.
Link to this sectionQuali sono gli argomenti chiave per inizializzare la classe DistanceCalculation in Ultralytics YOLO26?#
Gli argomenti chiave per inizializzare la classe DistanceCalculation in Ultralytics YOLO26 includono:
model: Percorso verso il file del modello YOLO26.tracker: Algoritmo di tracking da utilizzare (l'impostazione predefinita è 'botsort.yaml').conf: Soglia di confidenza per i rilevamenti.show: Flag per visualizzare l'output.
Per un elenco esaustivo e i valori predefiniti, vedi gli argomenti di DistanceCalculation.
