Calcul de la distance à l'aide de Ultralytics YOLOv8 🚀
Qu'est-ce que le calcul de la distance ?
La mesure de l'écart entre deux objets est connue sous le nom de calcul de la distance dans un espace déterminé. Dans le cas de Ultralytics YOLOv8le centroïde de la boîte englobante est utilisé pour calculer la distance pour les boîtes englobantes mises en évidence par l'utilisateur.
Regarde : Calcul de la distance à l'aide de Ultralytics YOLOv8
Visuels
Calcul de la distance à l'aide de Ultralytics YOLOv8 |
---|
Avantages du calcul de la distance ?
- Précision de la localisation : Améliore la précision du positionnement spatial dans les tâches de vision par ordinateur.
- Estimation de la taille : Permet d'estimer les tailles physiques pour une meilleure compréhension du contexte.
- Compréhension de la scène : Contribue à une compréhension en 3D de l'environnement pour une meilleure prise de décision.
Calcul de la distance
- Clique sur deux boîtes délimitées avec le bouton gauche de la souris pour calculer la distance.
Calcul de la distance à l'aide de YOLOv8 Exemple
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()
Note
- Le clic droit de la souris supprime tous les points dessinés
- Le clic gauche de la souris peut être utilisé pour dessiner des points.
Arguments facultatifs set_args
Nom | Type | Défaut | Description |
---|---|---|---|
names |
dict |
None |
Noms des classes |
view_img |
bool |
False |
Afficher les cadres avec les décomptes |
line_thickness |
int |
2 |
Augmente l'épaisseur des boîtes de délimitation |
line_color |
RGB |
(255, 255, 0) |
Couleur des lignes pour la cartographie des centroïdes sur deux boîtes de délimitation |
centroid_color |
RGB |
(255, 0, 255) |
Couleur du centroïde pour chaque boîte de délimitation |
Arguments model.track
Nom | Type | Défaut | Description |
---|---|---|---|
source |
im0 |
None |
répertoire source pour les images ou les vidéos |
persist |
bool |
False |
persistance des pistes entre les images |
tracker |
str |
botsort.yaml |
Méthode de suivi 'bytetrack' ou 'botsort' |
conf |
float |
0.3 |
Seuil de confiance |
iou |
float |
0.5 |
Seuil de reconnaissance de dette |
classes |
list |
None |
filtre les résultats par classe, c'est-à-dire classes=0, ou classes=[0,2,3] |
verbose |
bool |
True |
Affiche les résultats du suivi des objets |
Créé le 2024-01-05, Mis à jour le 2024-03-01
Auteurs : RizwanMunawar (5), glenn-jocher (2), AyushExel (1)