İçeriğe geç

Ultralytics kullanarak Mesafe HesaplamaYOLOv8 🚀

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

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

İsteğe Bağlı Argümanlar set_args

İsim Tip Varsayılan Açıklama
names dict None Sınıf adları
view_img bool False Çerçeveleri sayımlarla görüntüleme
line_thickness int 2 Sınırlayıcı kutu kalınlığını artırın
line_color RGB (255, 255, 0) İki sınırlayıcı kutu üzerinde eşlenen merkezler için Çizgi Rengi
centroid_color RGB (255, 0, 255) Her sınırlayıcı kutu için centroid rengi

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


Oluşturuldu 2024-01-05, Güncellendi 2024-03-01
Yazarlar: RizwanMunawar (5), glenn-jocher (2), AyushExel (1)

Yorumlar