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

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

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

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

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

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

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

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

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

import cv2
from ultralytics import YOLO, solutions

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 = solutions.QueueManager(
    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, solutions

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 = solutions.QueueManager(
    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()

الحجج QueueManager

اسم نوع افتراضي وصف
classes_names dict model.names قاموس تعيين معرّفات الفئات إلى أسماء الفئات.
reg_pts list of tuples [(20, 400), (1260, 400)] النقاط التي تحدد مضلع منطقة العد. افتراضي إلى مستطيل محدد مسبقاً.
line_thickness int 2 سماكة الخطوط التوضيحية.
track_thickness int 2 سُمك خطوط المسار.
view_img bool False ما إذا كان سيتم عرض إطارات الصور أم لا.
region_color tuple (255, 0, 255) لون خطوط منطقة العد (BGR).
view_queue_counts bool True ما إذا كان سيتم عرض عدد قوائم الانتظار أم لا.
draw_tracks bool False سواء لرسم مسارات الكائنات.
count_txt_color tuple (255, 255, 255) لون نص العد (BGR).
track_color tuple None لون المسارات. إذا كان None، سيتم استخدام ألوان مختلفة لمسارات مختلفة.
region_thickness int 5 سُمك خطوط منطقة العد.
fontsize float 0.7 حجم الخط للتعليقات التوضيحية النصية.

الحجج 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-05-18
المؤلفون: جلين-جوتشر (2)، برهان-ق (1)، رضوان منور (1)

التعليقات