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

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

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

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



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

صور

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

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

  • دقة التعريب: يعزز تحديد المواقع المكانية بدقة في مهام رؤية الكمبيوتر.
  • Size Estimation: Allows estimation of object size for better contextual understanding.
حساب المسافة
  • انقر فوق أي مربعين محيطين مع النقر بالماوس الأيسر لحساب المسافة

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

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()
ملاحظه
  • سيؤدي النقر بزر الماوس الأيمن إلى حذف جميع النقاط المرسومة
  • يمكن استخدام النقر بزر الماوس الأيسر لرسم النقاط
Distance is Estimate
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data, which lacks information about the object's depth.

الحجج DistanceCalculation()

Name Type Default وصف
names dict None قاموس أسماء الفئات.
view_img bool False علامة للإشارة إلى ما إذا كان ينبغي عرض دفق الفيديو.
line_thickness int 2 سماكة الخطوط المرسومة على الصورة.
line_color tuple (255, 255, 0) لون الخطوط المرسومة على الصورة (تنسيق BGR).
centroid_color tuple (255, 0, 255) لون الوسطيات المرسومة (تنسيق BGR).

الحجج model.track

جدال نوع افتراضي وصف
source str None Specifies the source directory for images or videos. Supports file paths and URLs.
persist bool False Enables persistent tracking of objects between frames, maintaining IDs across video sequences.
tracker str botsort.yaml Specifies the tracking algorithm to use, e.g., bytetrack.yaml أو botsort.yaml.
conf float 0.3 Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives.
iou float 0.5 Sets the Intersection over Union (IoU) threshold for filtering overlapping detections.
classes list None Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes.
verbose bool True Controls the display of tracking results, providing a visual output of tracked objects.

الأسئلة المتداولة

كيف يمكنني حساب المسافات بين الأجسام باستخدام Ultralytics YOLOv8 ؟

لحساب المسافات بين الأجسام باستخدام Ultralytics YOLOv8فإنك تحتاج إلى تحديد مركزيات المربع المحدود للأجسام المكتشفة. تتضمن هذه العملية تهيئة DistanceCalculation فئة من Ultralytics' solutions واستخدام مخرجات تتبع النموذج لحساب المسافات. يمكنك الرجوع إلى التنفيذ في مثال لحساب المسافة.

ما هي مزايا استخدام حساب المسافة مع Ultralytics YOLOv8 ؟

يوفر استخدام حساب المسافة مع Ultralytics YOLOv8 العديد من المزايا:

  • دقة تحديد المواقع: يوفر تحديداً دقيقاً للموقع المكاني للأجسام.
  • تقدير الحجم: يساعد في تقدير الأحجام المادية، مما يساهم في فهم سياقي أفضل.
  • فهم المشهد: يعزز فهم المشهد ثلاثي الأبعاد، مما يساعد على تحسين عملية اتخاذ القرار في تطبيقات مثل القيادة الذاتية والمراقبة.

هل يمكنني إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLOv8 ؟

نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLOv8 . وتتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، وتشغيل YOLOv8 الكشف عن الكائنات، واستخدام DistanceCalculation لحساب المسافات بين الأجسام في الإطارات المتتالية. للحصول على تطبيق مفصّل، راجع مثال على دفق الفيديو.

كيف يمكنني حذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLOv8 ؟

لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLOv8 ، يمكنك استخدام النقر بزر الفأرة الأيمن. سيؤدي هذا الإجراء إلى مسح جميع النقاط التي رسمتها. لمزيد من التفاصيل، راجع قسم الملاحظات تحت مثال حساب المسافة.

ما هي الوسيطات الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLOv8 ؟

الوسيطات الرئيسية لتهيئة DistanceCalculation فئة في Ultralytics YOLOv8 ما يلي:

  • names: قاموس تعيين مؤشرات الفئات إلى أسماء الفئات.
  • view_img: علامة للإشارة إلى ما إذا كان ينبغي عرض دفق الفيديو.
  • line_thickness: سماكة الخطوط المرسومة على الصورة.
  • line_color: لون الخطوط المرسومة على الصورة (تنسيق BGR).
  • centroid_color: لون الوسطيات (تنسيق BGR).

للاطلاع على قائمة شاملة والقيم الافتراضية، راجع وسيطات DistanceCalculation.


📅 Created 8 months ago ✏️ Updated 2 days ago

التعليقات