İçeriğe geç

Kullanarak Mesafe Hesaplama Ultralytics YOLOv8

Mesafe Hesaplama Nedir?

İki nesne arasındaki boşluğun ölçülmesi, belirli bir alan içinde mesafe hesaplaması olarak bilinir. Bu durumda Ultralytics YOLOv8sınırlayıcı kutu merkezi, kullanıcı tarafından vurgulanan sınırlayıcı kutuların mesafesini hesaplamak için kullanılır.



İzle: Kullanarak Mesafe Hesaplama Ultralytics YOLOv8

Görseller

Kullanarak Mesafe Hesaplama Ultralytics YOLOv8
Ultralytics YOLOv8 Mesafe Hesaplama

Mesafe Hesaplamanın Avantajları?

  • Yerelleştirme Hassasiyeti: Bilgisayarla görme görevlerinde doğru uzamsal konumlandırmayı geliştirir.
  • Boyut Tahmini: Daha iyi bağlamsal anlayış için fiziksel boyutların tahmin edilmesini sağlar.
  • Sahne Anlayışı: Gelişmiş karar verme için çevrenin 3 boyutlu olarak anlaşılmasına katkıda bulunur.
Mesafe Hesaplama
  • Mesafe hesaplaması için herhangi iki sınırlayıcı kutuya Sol Fare tıklaması ile tıklayın

YOLOv8 Kullanarak Mesafe Hesaplama Örnek

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()
Not
  • Fare Sağ Tıklaması çizilen tüm noktaları silecektir
  • Fare Sol Tıklaması nokta çizmek için kullanılabilir

Argümanlar DistanceCalculation()

Name Type Default Açıklama
names dict None Sınıf adları sözlüğü.
pixels_per_meter int 10 Pikselden metreye dönüştürme faktörü.
view_img bool False Video akışının görüntülenmesi gerekip gerekmediğini belirten bayrak.
line_thickness int 2 Görüntü üzerine çizilen çizgilerin kalınlığı.
line_color tuple (255, 255, 0) Görüntü üzerine çizilen çizgilerin rengi (BGR formatı).
centroid_color tuple (255, 0, 255) Çizilen merkez noktalarının rengi (BGR biçimi).

Argümanlar model.track

İsim Tip Varsayılan Açıklama
source im0 None resimler veya videolar için kaynak dizin
persist bool False kareler arasında kalıcı izler
tracker str botsort.yaml İzleme yöntemi 'bytetrack' veya 'botsort'
conf float 0.3 Güven Eşiği
iou float 0.5 IOU Eşiği
classes list None sonuçları sınıfa göre filtreleyin, yani classes=0 veya classes=[0,2,3]
verbose bool True Nesne izleme sonuçlarını görüntüleme

SSS

Ultralytics YOLOv8 adresini kullanarak nesneler arasındaki mesafeleri nasıl hesaplayabilirim?

Nesneler arasındaki mesafeleri hesaplamak için Ultralytics YOLOv8'de, algılanan nesnelerin sınırlayıcı kutu merkezlerini belirlemeniz gerekir. Bu işlem, nesnelerin sınırlayıcı kutu DistanceCalculation sınıfından Ultralytics' solutions modülünü kullanır ve mesafeleri hesaplamak için modelin izleme çıktılarını kullanır. Uygulamaya şuradan başvurabilirsiniz mesafe hesaplama örneği.

Mesafe hesaplamasını Ultralytics YOLOv8 ile kullanmanın avantajları nelerdir?

Mesafe hesaplamasını Ultralytics YOLOv8 ile kullanmak çeşitli avantajlar sunar:

  • Yerelleştirme Hassasiyeti: Nesneler için doğru uzamsal konumlandırma sağlar.
  • Boyut Tahmini: Fiziksel boyutların tahmin edilmesine yardımcı olarak bağlamın daha iyi anlaşılmasına katkıda bulunur.
  • Sahne Anlama: 3D sahne kavrayışını geliştirerek otonom sürüş ve gözetleme gibi uygulamalarda gelişmiş karar verme sürecine yardımcı olur.

Ultralytics YOLOv8 ile gerçek zamanlı video akışlarında mesafe hesaplaması yapabilir miyim?

Evet, Ultralytics YOLOv8 ile gerçek zamanlı video akışlarında mesafe hesaplaması yapabilirsiniz. İşlem, OpenCV kullanarak video karelerini yakalamayı, YOLOv8 nesne algılamayı çalıştırmayı ve DistanceCalculation sınıfı, birbirini izleyen karelerdeki nesneler arasındaki mesafeleri hesaplamak için kullanılır. Ayrıntılı bir uygulama için bkz. video akışı örneği.

Ultralytics YOLOv8 adresini kullanarak mesafe hesaplaması sırasında çizilen noktaları nasıl silebilirim?

Ultralytics YOLOv8 ile mesafe hesaplaması sırasında çizilen noktaları silmek için farenin sağ tuşunu kullanabilirsiniz. Bu işlem çizdiğiniz tüm noktaları silecektir. Daha fazla ayrıntı için mesafe hesaplama örneğinin altındaki not bölümüne bakın.

DistanceCalculation sınıfını Ultralytics YOLOv8 adresinde başlatmak için temel argümanlar nelerdir?

Başlatmak için temel argümanlar DistanceCalculation sınıfına Ultralytics YOLOv8 adresinden ulaşabilirsiniz:

  • names: Sınıf indekslerini sınıf adlarıyla eşleyen sözlük.
  • pixels_per_meter: Pikselden metreye dönüştürme faktörü.
  • view_img: Video akışının görüntülenip görüntülenmeyeceğini gösteren bayrak.
  • line_thickness: Görüntü üzerine çizilen çizgilerin kalınlığı.
  • line_color: Görüntü üzerine çizilen çizgilerin rengi (BGR formatı).
  • centroid_color: Merkezlerin rengi (BGR formatı).

Kapsamlı bir liste ve varsayılan değerler için DistanceCalculation argümanlarına bakın.



Oluşturma 2024-01-05, Güncelleme 2024-07-14
Yazarlar: RizwanMunawar (5), glenn-jocher (7), IvorZhu331 (1), AyushExel (1)

Yorumlar