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

рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 ЁЯЪА

рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ?

рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБ рдХреА рдЧрд┐рдирддреА Ultralytics YOLOv8 рд╡реАрдбрд┐рдпреЛ рдФрд░ рдХреИрдорд░рд╛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдЯреАрдХ рдкрд╣рдЪрд╛рди рдФрд░ рдЧрд┐рдирддреА рд╢рд╛рдорд┐рд▓ рд╣реИред YOLOv8 рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯрддрд╛, рднреАрдбрд╝ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрд╢рд▓ рдФрд░ рд╕рдЯреАрдХ рд╡рд╕реНрддреБ рдЧрдгрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдЧрд╣рди рд╕реАрдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред



рд╕рддрд░реНрдХрддрд╛: рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8

рд╡рд╕реНрддреБ рдЧрдгрдирд╛ рдХреЗ рд▓рд╛рдн?

  • рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрдХреВрд▓рди: рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╕рдЯреАрдХ рдЧрдгрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдФрд░ рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдкреНрд░рдмрдВрдзрди рдЬреИрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдЖрд╡рдВрдЯрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдХреЗ рдХреБрд╢рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред
  • рдмрдврд╝реА рд╣реБрдИ рд╕реБрд░рдХреНрд╖рд╛: рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЯреНрд░реИрдХ рдФрд░ рдЧрд┐рдирдиреЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдХреНрд░рд┐рдп рдЦрддрд░реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓рддреА рд╣реИред
  • рд╕реВрдЪрд┐рдд рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛: рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ, рдЦреБрджрд░рд╛ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди, рдпрд╛рддрд╛рдпрд╛рдд рдкреНрд░рдмрдВрдзрди рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╡рд╛рди рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХрд╕ рдПрдХреНрд╡рд╛рдХрд▓реНрдЪрд░
рдХрдиреНрд╡реЗрдпрд░ рдмреЗрд▓реНрдЯ рдкреИрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЧрд┐рдирддреА Ultralytics YOLOv8 рд╕рдореБрджреНрд░ рдореЗрдВ рдордЫрд▓реА рдХреА рдЧрд┐рдирддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8
рдХрдиреНрд╡реЗрдпрд░ рдмреЗрд▓реНрдЯ рдкреИрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЧрд┐рдирддреА Ultralytics YOLOv8 рд╕рдореБрджреНрд░ рдореЗрдВ рдордЫрд▓реА рдХреА рдЧрд┐рдирддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8

рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ YOLOv8 рдЙрджрд╛рд╣рд░рдг

from ultralytics import YOLO
from ultralytics.solutions import object_counter
import cv2

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))

# Define region points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi",
                       cv2.VideoWriter_fourcc(*'mp4v'),
                       fps,
                       (w, h))

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=region_points,
                 classes_names=model.names,
                 draw_tracks=True,
                 line_thickness=2)

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 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

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

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))

# Define region points as a polygon with 5 points
region_points = [(20, 400), (1080, 404), (1080, 360), (20, 360), (20, 400)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi",
                       cv2.VideoWriter_fourcc(*'mp4v'),
                       fps,
                       (w, h))

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=region_points,
                 classes_names=model.names,
                 draw_tracks=True,
                 line_thickness=2)

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 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

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

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))

# Define line points
line_points = [(20, 400), (1080, 400)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi",
                       cv2.VideoWriter_fourcc(*'mp4v'),
                       fps,
                       (w, h))

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=line_points,
                 classes_names=model.names,
                 draw_tracks=True,
                 line_thickness=2)

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 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

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

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))

line_points = [(20, 400), (1080, 400)]  # line or region points
classes_to_count = [0, 2]  # person and car classes for count

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi",
                       cv2.VideoWriter_fourcc(*'mp4v'),
                       fps,
                       (w, h))

# Init Object Counter
counter = object_counter.ObjectCounter()
counter.set_args(view_img=True,
                 reg_pts=line_points,
                 classes_names=model.names,
                 draw_tracks=True,
                 line_thickness=2)

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,
                         classes=classes_to_count)

    im0 = counter.start_counting(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
рдХреНрд╖реЗрддреНрд░ рдЬрдВрдЧрдо рд╣реИ

рдЖрдк рдЗрд╕рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ set_args

рдирд╛рдо рдкреНрд░рдХрд╛рд░ рдЪреВрдХ рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо
view_img bool False рдЧрд┐рдирддреА рдХреЗ рд╕рд╛рде рдлрд╝реНрд░реЗрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
view_in_counts bool True рдХреЗрд╡рд▓ рд╡реАрдбрд┐рдпреЛ рдлрд╝реНрд░реЗрдо рдкрд░ рдЗрди-рдХрд╛рдЙрдВрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
view_out_counts bool True рдХреЗрд╡рд▓ рд╡реАрдбрд┐рдпреЛ рдлрд╝реНрд░реЗрдо рдкрд░ рдЖрдЙрдЯ-рдХрд╛рдЙрдВрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
line_thickness int 2 рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдмрдврд╝рд╛рдПрдБ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдореЛрдЯрд╛рдИ рдЧрд┐рдиреЗрдВ
reg_pts list [(20, 400), (1260, 400)] рдХреНрд╖реЗрддреНрд░ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ
classes_names dict model.model.names рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХрд╛ рд╢рдмреНрджрдХреЛрд╢
count_reg_color RGB Color (255, 0, 255) рд╡рд╕реНрддреБ рдХреА рдЧрд┐рдирддреА рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд░реЗрдЦрд╛ рдХрд╛ рд░рдВрдЧ
track_thickness int 2 рдЯреНрд░реИрдХрд┐рдВрдЧ рд▓рд╛рдЗрдиреЛрдВ рдХреА рдореЛрдЯрд╛рдИ
draw_tracks bool False рдЖрд░реЗрдЦрдг рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдЯреНрд░реИрдХ рд░реЗрдЦрд╛рдПрдБ
track_color RGB Color (0, 255, 0) рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реИрдХ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рд░рдВрдЧ
line_dist_thresh int 15 рд▓рд╛рдЗрди рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рд╕реАрдорд╛
count_txt_color RGB Color (255, 255, 255) рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯ рдкрд╛рда рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рднреВрдорд┐ рд░рдВрдЧ
region_thickness int 5 рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛рдЙрдВрдЯрд░ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдореЛрдЯрд╛рдИ
count_bg_color RGB Color (255, 255, 255) рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рд░рдВрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ

рддрд░реНрдХ 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 рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ


2023-12-02 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-04-18
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (9), рд░рд┐рдЬрд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (1), рдЖрдпреБрд╖рдПрдХреНрд╕реЗрд▓ (1)

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