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