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

إدارة قائمة الانتظار باستخدام Ultralytics YOLOv8 🚀

ما هي إدارة قائمة الانتظار؟

إدارة قائمة الانتظار باستخدام Ultralytics YOLOv8 يتضمن تنظيم ومراقبة خطوط الأشخاص أو المركبات لتقليل أوقات الانتظار وتعزيز الكفاءة. يتعلق الأمر بتحسين قوائم الانتظار لتحسين رضا العملاء وأداء النظام في أماكن مختلفة مثل البيع بالتجزئة والبنوك والمطارات ومرافق الرعاية الصحية.

مزايا إدارة قائمة الانتظار؟

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

تطبيقات العالم الحقيقي

السوقيات التجزئه
إدارة قائمة الانتظار في شباك تذاكر المطار باستخدام Ultralytics YOLOv8 مراقبة قائمة الانتظار في الحشد باستخدام Ultralytics YOLOv8
إدارة قائمة الانتظار في شباك تذاكر المطار باستخدام Ultralytics YOLOv8 مراقبة قائمة الانتظار في الحشد Ultralytics YOLOv8

إدارة قائمة الانتظار باستخدام YOLOv8 مثل

import cv2
from ultralytics import YOLO
from ultralytics.solutions import queue_management

model = YOLO("yolov8n.pt")
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 = cv2.VideoWriter("queue_management.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

queue = queue_management.QueueManager()
queue.set_args(classes_names=model.names,
               reg_pts=queue_region,
               line_thickness=3,
               fontsize=1.0,
               region_color=(255, 144, 31))

while cap.isOpened():
    success, im0 = cap.read()

    if success:
        tracks = model.track(im0, show=False, persist=True,
                             verbose=False)
        out = queue.process_queue(im0, tracks)

        video_writer.write(im0)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        continue

    print("Video frame is empty or video processing has been successfully completed.")
    break

cap.release()
cv2.destroyAllWindows()
import cv2
from ultralytics import YOLO
from ultralytics.solutions import queue_management

model = YOLO("yolov8n.pt")
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 = cv2.VideoWriter("queue_management.avi",
                               cv2.VideoWriter_fourcc(*'mp4v'),
                               fps,
                               (w, h))

queue_region = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

queue = queue_management.QueueManager()
queue.set_args(classes_names=model.names,
               reg_pts=queue_region,
               line_thickness=3,
               fontsize=1.0,
               region_color=(255, 144, 31))

while cap.isOpened():
    success, im0 = cap.read()

    if success:
        tracks = model.track(im0, show=False, persist=True,
                             verbose=False, classes=0)  # Only person class
        out = queue.process_queue(im0, tracks)

        video_writer.write(im0)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        continue

    print("Video frame is empty or video processing has been successfully completed.")
    break

cap.release()
cv2.destroyAllWindows()

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

اسم نوع افتراضي وصف
view_img bool False إطارات العرض مع التهم
view_queue_counts bool True يتم احتساب قائمة انتظار العرض فقط على إطار الفيديو
line_thickness int 2 زيادة سمك الصناديق المحيطة
reg_pts list [(20, 400), (1260, 400)] النقاط التي تحدد منطقة المنطقة
classes_names dict model.model.names قاموس أسماء الفئات
region_color RGB Color (255, 0, 255) لون منطقة أو خط عد الكائنات
track_thickness int 2 سمك خطوط التتبع
draw_tracks bool False تمكين رسم خطوط المسار
track_color RGB Color (0, 255, 0) لون لكل خط مسار
count_txt_color RGB Color (255, 255, 255) لون المقدمة لنص عدد الكائنات
region_thickness int 5 سمك منطقة أو خط عداد الكائن
fontsize float 0.6 حجم خط عد النص

الحجج 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-04-02, اخر تحديث 2024-04-02
المؤلفون: برهان كيو (1)، رضوان منور (1)

التعليقات