рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХрддрд╛рд░ рдкреНрд░рдмрдВрдзрди 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 рдЯреНрд░реИрдХрд┐рдВрдЧ рд╡рд┐рдзрд┐ 'рдмрд╛рдЗрдЯрдЯреНрд░реИрдХ' рдпрд╛ 'рдмреЙрдЯрд╕реЙрд░реНрдЯ'
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)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ