Skip to content

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
Ultralytics YOLOv8 Calcul de la distance

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

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

Name Type Default Description
names dict None Dictionnaire des noms de classes.
pixels_per_meter int 10 Facteur de conversion des pixels en mètres.
view_img bool False Drapeau indiquant si le flux vidéo doit être affiché.
line_thickness int 2 Épaisseur des lignes tracées sur l'image.
line_color tuple (255, 255, 0) Couleur des lignes dessinées sur l'image (format BGR).
centroid_color tuple (255, 0, 255) Couleur des centroïdes dessinés (format BGR).

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

FAQ

Comment calculer les distances entre les objets Ă  l'aide de Ultralytics YOLOv8 ?

Pour calculer les distances entre les objets à l'aide de Ultralytics YOLOv8Pour cela, tu dois identifier les centroïdes de la boîte de délimitation des objets détectés. Ce processus implique l'initialisation du DistanceCalculation classe de Ultralytics' solutions et en utilisant les données de suivi du modèle pour calculer les distances. Tu peux te référer à la mise en œuvre dans le exemple de calcul de distance.

Quels sont les avantages du calcul de la distance avec Ultralytics YOLOv8 ?

L'utilisation du calcul de la distance avec Ultralytics YOLOv8 offre plusieurs avantages :

  • PrĂ©cision de la localisation : Fournit un positionnement spatial prĂ©cis pour les objets.
  • Estimation de la taille : Aide Ă  estimer les tailles physiques, ce qui contribue Ă  une meilleure comprĂ©hension du contexte.
  • ComprĂ©hension de la scène : AmĂ©liore la comprĂ©hension des scènes en 3D, ce qui permet d'amĂ©liorer la prise de dĂ©cision dans des applications telles que la conduite autonome et la surveillance.

Puis-je effectuer un calcul de distance dans des flux vidéo en temps réel avec Ultralytics YOLOv8 ?

Oui, tu peux calculer la distance dans des flux vidéo en temps réel avec Ultralytics YOLOv8 . Le processus consiste à capturer des images vidéo à l'aide d'OpenCV, à exécuter la détection d'objets YOLOv8 et à utiliser la fonction DistanceCalculation pour calculer les distances entre les objets dans des images successives. Pour une implémentation détaillée, voir la page exemple de flux vidéo.

Comment supprimer les points dessinés lors du calcul de la distance à l'aide de Ultralytics YOLOv8 ?

Pour effacer les points dessinés pendant le calcul de la distance avec Ultralytics YOLOv8 , tu peux utiliser un clic droit de la souris. Cette action effacera tous les points que tu as dessinés. Pour plus de détails, reporte-toi à la section note sous l'exemple de calcul de distance.

Quels sont les arguments clés pour initialiser la classe DistanceCalculation dans Ultralytics YOLOv8 ?

Les arguments clés pour initialiser le DistanceCalculation classe dans Ultralytics YOLOv8 inclure :

  • names: Dictionnaire Ă©tablissant la correspondance entre les indices de classe et les noms de classe.
  • pixels_per_meter: Facteur de conversion des pixels en mètres.
  • view_img: Drapeau indiquant si le flux vidĂ©o doit ĂŞtre affichĂ©.
  • line_thickness: Épaisseur des lignes tracĂ©es sur l'image.
  • line_color: Couleur des lignes dessinĂ©es sur l'image (format BGR).
  • centroid_color: Couleur des centroĂŻdes (format BGR).

Pour une liste exhaustive et les valeurs par défaut, voir les arguments de DistanceCalculation.



Créé le 2024-01-05, Mis à jour le 2024-07-14
Auteurs : RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Commentaires