Link to this sectionحساب المسافة باستخدام Ultralytics YOLO26#
Link to this sectionما هو حساب المسافة؟#
حساب المسافة هو عملية قياس المساحة بين كائنين تم اكتشافهما داخل إطار صورة أو فيديو. في حالة Ultralytics YOLO26، يتم استخدام مركز صندوق الإحاطة لحساب المسافة لصناديق الإحاطة التي يحددها المستخدم.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
Link to this sectionالمرئيات#
| حساب المسافة باستخدام Ultralytics YOLO26 |
|---|
![]() |
Link to this sectionمزايا حساب المسافة#
- الدقة في التوطين: تعزز تحديد الموقع المكاني بدقة في مهام الرؤية الحاسوبية.
- تقدير الحجم: يسمح بتقدير حجم الكائن لفهم سياقي أفضل.
- فهم المشهد: يحسن فهم المشهد ثلاثي الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل المركبات ذاتية القيادة وأنظمة المراقبة.
- تجنب الاصطدام: يمكن الأنظمة من اكتشاف الاصطدامات المحتملة عن طريق مراقبة المسافات بين الأجسام المتحركة.
- التحليل المكاني: يسهل تحليل علاقات الكائنات وتفاعلاتها داخل البيئة المراقبة.
حساب المسافة
- انقر على أي صندوقي إحاطة باستخدام زر الفأرة الأيسر لحساب المسافة.
- استخدم زر الفأرة الأيمن لحذف جميع النقاط المرسومة.
- انقر بزر الفأرة الأيسر في أي مكان داخل الإطار لإضافة نقاط جديدة.
المسافة هي تقدير
المسافة هي تقدير وقد لا تكون دقيقة تماماً لأنها تُحسب باستخدام بيانات ثنائية الأبعاد، والتي تفتقر إلى معلومات العمق.
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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 = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # path to the YOLO26 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(im0)
print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windowsLink to this sectionوسائط DistanceCalculation()#
إليك جدول يحتوي على وسائط DistanceCalculation:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | المسار إلى ملف نموذج Ultralytics YOLO. |
يمكنك أيضاً الاستفادة من وسائط track المتنوعة في حل DistanceCalculation.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
tracker | str | 'botsort.yaml' | يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المدمجة هي: botsort.yaml و bytetrack.yaml و ocsort.yaml و deepocsort.yaml و fasttrack.yaml و tracktrack.yaml. |
conf | float | 0.1 | يضبط عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن إيجابيات كاذبة. |
iou | float | 0.7 | يضبط عتبة تقاطع الاتحاد (IoU) لتصفية الاكتشافات المتداخلة. |
classes | list | None | يصفي النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط. |
verbose | bool | True | يتحكم في عرض نتائج التتبع، مما يوفر مخرجاً مرئياً للكائنات المتعقبة. |
device | str | None | يحدد الجهاز للاستدلال (على سبيل المثال، cpu أو cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين وحدة المعالجة المركزية، أو وحدة معالجة رسومات محددة، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
علاوة على ذلك، تتوفر وسائط التصور التالية:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
show | bool | False | إذا كان True، فإنه يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار. |
line_width | int or None | None | يحدد عرض خط صناديق التحديد. إذا كان None، يتم تعديل عرض الخط تلقائياً بناءً على حجم الصورة. يوفر تخصيصاً مرئياً للوضوح. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف. |
show_labels | bool | True | يعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة. |
Link to this sectionتفاصيل التنفيذ#
تعمل فئة DistanceCalculation عن طريق تتبع الكائنات عبر إطارات الفيديو وحساب المسافة الإقليدية بين مراكز صناديق الإحاطة المختارة. عندما تنقر على كائنين، يقوم الحل بما يلي:
- استخراج مراكز (نقاط المنتصف) لصناديق الإحاطة المحددة
- حساب المسافة الإقليدية بين هذه المراكز بالبكسل
- عرض المسافة على الإطار مع خط واصل بين الكائنات
يستخدم التنفيذ طريقة mouse_event_for_distance للتعامل مع تفاعلات الفأرة، مما يسمح للمستخدمين بتحديد الكائنات ومسح التحديدات حسب الحاجة. تتعامل طريقة process مع المعالجة إطاراً تلو الآخر، وتتبع الكائنات، وحساب المسافات.
Link to this sectionالتطبيقات#
لحساب المسافة باستخدام YOLO26 تطبيقات عملية عديدة:
- تحليلات التجزئة: قياس قرب العملاء من المنتجات وتحليل فعالية تخطيط المتجر
- السلامة الصناعية: مراقبة المسافات الآمنة بين العمال والآلات
- إدارة المرور: تحليل تباعد المركبات واكتشاف التلاصق (القيادة المتقاربة جداً)
- تحليل الرياضة: حساب المسافات بين اللاعبين والكرة ومواقع الملعب الرئيسية
- الرعاية الصحية: ضمان التباعد المناسب في مناطق الانتظار ومراقبة حركة المرضى
- الروبوتات: تمكين الروبوتات من الحفاظ على مسافات مناسبة من العوائق والأشخاص
Link to this sectionالأسئلة الشائعة#
Link to this sectionكيف أحسب المسافات بين الكائنات باستخدام Ultralytics YOLO26؟#
لحساب المسافات بين الكائنات باستخدام Ultralytics YOLO26، تحتاج إلى تحديد مراكز صناديق الإحاطة للكائنات المكتشفة. تتضمن هذه العملية تهيئة فئة DistanceCalculation من وحدة solutions في Ultralytics واستخدام مخرجات تتبع النموذج لحساب المسافات.
Link to this sectionما هي مزايا استخدام حساب المسافة مع Ultralytics YOLO26؟#
يوفر استخدام حساب المسافة مع Ultralytics YOLO26 العديد من المزايا:
- الدقة في التوطين: يوفر تحديداً دقيقاً للموقع المكاني للكائنات.
- تقدير الحجم: يساعد في تقدير الأحجام الفيزيائية، مما يساهم في فهم سياقي أفضل.
- فهم المشهد: يعزز فهم المشهد ثلاثي الأبعاد، مما يساعد في تحسين اتخاذ القرار في تطبيقات مثل القيادة الذاتية والمراقبة.
- المعالجة الفورية: يقوم بإجراء الحسابات أثناء التنفيذ، مما يجعله مناسباً لتحليل الفيديو المباشر.
- قدرات التكامل: يعمل بسلاسة مع حلول YOLO26 الأخرى مثل تتبع الكائنات وتقدير السرعة.
Link to this sectionهل يمكنني إجراء حساب المسافة في تدفقات الفيديو المباشرة باستخدام Ultralytics YOLO26؟#
نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو المباشرة باستخدام Ultralytics YOLO26. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، وتشغيل اكتشاف الكائنات الخاص بـ YOLO26، واستخدام فئة DistanceCalculation لحساب المسافات بين الكائنات في الإطارات المتتالية. للحصول على تنفيذ مفصل، راجع مثال تدفق الفيديو.
Link to this sectionكيف أحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26؟#
لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26، يمكنك استخدام نقرة زر الفأرة الأيمن. سيؤدي هذا الإجراء إلى مسح جميع النقاط التي قمت برسمها. لمزيد من التفاصيل، ارجع إلى قسم الملاحظات تحت مثال حساب المسافة.
Link to this sectionما هي الوسائط الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO26؟#
تشمل الوسائط الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO26 ما يلي:
model: مسار ملف نموذج YOLO26.tracker: خوارزمية التتبع المستخدمة (الافتراضي هو 'botsort.yaml').conf: عتبة الثقة للاكتشافات.show: علم (flag) لعرض المخرجات.
للحصول على قائمة شاملة والقيم الافتراضية، راجع وسائط DistanceCalculation.
