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.

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

from ultralytics import YOLO
from ultralytics.solutions import distance_calculation
import cv2

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 = distance_calculation.DistanceCalculation()
dist_obj.set_args(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 opzionali set_args

Nome Tipo Predefinito Descrizione
names dict None Nomi delle classi
view_img bool False Visualizza i fotogrammi con i conteggi
line_thickness int 2 Aumenta lo spessore dei riquadri di delimitazione
line_color RGB (255, 255, 0) Colore della linea per la mappatura dei centroidi su due caselle di delimitazione
centroid_color RGB (255, 0, 255) Colore del centroide per ogni rettangolo di selezione

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


Creato 2024-01-05, Aggiornato 2024-02-10
Autori: chr043416@gmail.com (4), glenn-jocher (2), AyushExel (1)

Commenti