Overslaan naar inhoud

Afstand berekenen met Ultralytics YOLOv8

Wat is afstand berekenen?

Het meten van de afstand tussen twee objecten staat bekend als afstandsberekening binnen een bepaalde ruimte. In het geval van Ultralytics YOLOv8wordt het middelpunt van de bounding box gebruikt om de afstand te berekenen voor bounding boxes die door de gebruiker zijn gemarkeerd.



Kijken: Afstand berekenen met Ultralytics YOLOv8

Beeldmateriaal

Afstand berekenen met Ultralytics YOLOv8
Ultralytics YOLOv8 Afstand berekenen

Voordelen van afstandsberekening?

  • Lokalisatieprecisie: Verbetert nauwkeurige ruimtelijke positionering in computervisietaken.
  • Schatting van de grootte: Maakt schatting van fysieke afmetingen mogelijk voor een beter begrip van de context.
  • Inzicht in scène: Draagt bij aan een 3D begrip van de omgeving voor verbeterde besluitvorming.
Afstand berekenen
  • Klik met de linkermuisknop op twee begrenzende vakken om de afstand te berekenen

Afstand berekenen met YOLOv8 Voorbeeld

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()
Opmerking
  • Rechts klikken met de muis verwijdert alle getekende punten
  • Klikken met de linkermuisknop kan worden gebruikt om punten te tekenen

Argumenten DistanceCalculation()

Name Type Default Beschrijving
names dict None Dictionary of classes names.
pixels_per_meter int 10 Conversiefactor van pixels naar meters.
view_img bool False Vlag om aan te geven of de videostream moet worden weergegeven.
line_thickness int 2 Dikte van de getekende lijnen op de afbeelding.
line_color tuple (255, 255, 0) Kleur van de lijnen die op de afbeelding zijn getekend (BGR-formaat).
centroid_color tuple (255, 0, 255) Kleur van de getekende centroïden (BGR-formaat).

Argumenten model.track

Naam Type Standaard Beschrijving
source im0 None bronmap voor afbeeldingen of video's
persist bool False Blijvende sporen tussen frames
tracker str botsort.yaml Volgmethode 'bytetrack' of 'botsort'
conf float 0.3 Vertrouwensdrempel
iou float 0.5 Drempel IOU
classes list None filter resultaten op klasse, d.w.z. classes=0, of classes=[0,2,3]
verbose bool True De resultaten van het volgen van objecten weergeven

FAQ

Hoe bereken ik afstanden tussen objecten met Ultralytics YOLOv8 ?

Afstanden tussen objecten berekenen met Ultralytics YOLOv8moet je de middelpunten van de bounding box van de gedetecteerde objecten identificeren. Dit proces omvat het initialiseren van de DistanceCalculation klasse van Ultralytics' solutions module en de trackinguitgangen van het model gebruiken om de afstanden te berekenen. Je kunt de implementatie bekijken in de voorbeeld afstandsberekening.

Wat zijn de voordelen van afstandsberekening met Ultralytics YOLOv8 ?

Het gebruik van afstandsberekening met Ultralytics YOLOv8 biedt verschillende voordelen:

  • Lokalisatieprecisie: Biedt nauwkeurige ruimtelijke positionering voor objecten.
  • Grootte schatten: Helpt bij het schatten van fysieke afmetingen, wat bijdraagt aan een beter begrip van de context.
  • Scène begrijpen: Verbetert het begrip van 3D-scènes, waardoor de besluitvorming in toepassingen als autonoom rijden en bewaking wordt verbeterd.

Kan ik afstandsberekeningen uitvoeren in realtime videostreams met Ultralytics YOLOv8 ?

Ja, je kunt afstandsberekeningen uitvoeren in real-time videostromen met Ultralytics YOLOv8 . Het proces bestaat uit het vastleggen van videoframes met OpenCV, het uitvoeren van YOLOv8 objectdetectie en het gebruiken van de DistanceCalculation klasse om afstanden te berekenen tussen objecten in opeenvolgende frames. Voor een gedetailleerde implementatie, zie de videostream voorbeeld.

Hoe verwijder ik punten die zijn getekend tijdens de afstandsberekening met Ultralytics YOLOv8 ?

Om punten te verwijderen die zijn getekend tijdens de afstandsberekening met Ultralytics YOLOv8 , kun je met de rechtermuisknop klikken. Deze actie wist alle punten die je hebt getekend. Raadpleeg voor meer informatie de sectie met opmerkingen onder het voorbeeld van de afstandsberekening.

Wat zijn de belangrijkste argumenten voor het initialiseren van de klasse DistanceCalculation in Ultralytics YOLOv8 ?

De belangrijkste argumenten voor het initialiseren van de DistanceCalculation klasse in Ultralytics YOLOv8 bevatten:

  • names: Woordenboek dat klasse-indices aan klassenamen koppelt.
  • pixels_per_meter: Conversiefactor van pixels naar meters.
  • view_img: Vlag om aan te geven of de videostream moet worden weergegeven.
  • line_thickness: Dikte van de getekende lijnen op de afbeelding.
  • line_color: Kleur van de lijnen die op de afbeelding zijn getekend (BGR-indeling).
  • centroid_color: Kleur van de centroïden (BGR formaat).

Zie de argumenten van DistanceCalculation voor een volledige lijst en standaardwaarden.



Created 2024-01-05, Updated 2024-07-14
Authors: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Reacties