انتقل إلى المحتوى

حساب المسافة باستخدام Ultralytics YOLOv8 🚀

ما هو حساب المسافة؟

يعرف قياس الفجوة بين كائنين بحساب المسافة داخل مساحة محددة. في حالة Ultralytics YOLOv8، يتم استخدام سنترويد المربع المحيط لحساب المسافة للمربعات المحيطة التي يبرزها المستخدم.

صور

حساب المسافة باستخدام Ultralytics YOLOv8
Ultralytics YOLOv8 حساب المسافة

مزايا حساب المسافة؟

  • دقة التعريب: يعزز تحديد المواقع المكانية بدقة في مهام رؤية الكمبيوتر.
  • تقدير الحجم: يسمح بتقدير الأحجام المادية لفهم السياق بشكل أفضل.
  • فهم المشهد: يساهم في فهم 3D للبيئة لتحسين عملية صنع القرار.
حساب المسافة
  • انقر فوق أي مربعين محيطين مع النقر بالماوس الأيسر لحساب المسافة

حساب المسافة باستخدام YOLOv8 مثل

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()
ملاحظه
  • سيؤدي النقر بزر الماوس الأيمن إلى حذف جميع النقاط المرسومة
  • يمكن استخدام النقر بزر الماوس الأيسر لرسم النقاط

الحجج الاختيارية set_args

اسم نوع افتراضي وصف
names dict None أسماء الفصول
view_img bool False إطارات العرض مع التهم
line_thickness int 2 زيادة سمك الصناديق المحيطة
line_color RGB (255, 255, 0) لون الخط لتعيين النقطات الوسطى على مربعين محيطين
centroid_color RGB (255, 0, 255) لون النقطه الوسطى لكل مربع محيط

الحجج model.track

اسم نوع افتراضي وصف
source im0 None الدليل المصدر للصور أو مقاطع الفيديو
persist bool False المسارات المستمرة بين الإطارات
tracker str botsort.yaml طريقة التتبع "bytetrack" أو "botsort"
conf float 0.3 عتبة الثقة
iou float 0.5 عتبة IOU
classes list None تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3]
verbose bool True عرض نتائج تعقب الكائن


تم إنشاء 2024-01-05, اخر تحديث 2024-02-10
المؤلفون: chr043416@gmail.com (4) ، جلين جوشر (2) ، أيوشكسيل (1)

التعليقات