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 |
---|
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)