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