рджреВрд░реА рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 ЁЯЪА
рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХреНрдпрд╛ рд╣реИ?
рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рдХреА рдЦрд╛рдИ рдХреЛ рдорд╛рдкрдиреЗ рдХреЛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдХреЗ рднреАрддрд░ рджреВрд░реА рдЧрдгрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ Ultralytics YOLOv8, рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рддрд░реНрдХрддрд╛: рджреВрд░реА рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8
рджреГрд╢реНрдпреЛрдВ
рджреВрд░реА рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Ultralytics YOLOv8 |
---|
рджреВрд░реА рдЧрдгрдирд╛ рдХреЗ рд▓рд╛рдн?
- рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкрд░рд┐рд╢реБрджреНрдзрддрд╛: рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рдЯреАрдХ рд╕реНрдерд╛рдирд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
- рдЖрдХрд╛рд░ рдЕрдиреБрдорд╛рди: рдмреЗрд╣рддрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрдорд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рджреГрд╢реНрдп рд╕рдордЭ: рдмреЗрд╣рддрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА 3D рд╕рдордЭ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред
рджреВрд░реА рдХреА рдЧрдгрдирд╛
- рджреВрд░реА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдПрдВ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рджреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
рджреВрд░реА рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ YOLOv8 рдЙрджрд╛рд╣рд░рдг
from ultralytics import YOLO
from ultralytics.solutions import distance_calculation
import cv2
model = YOLO("yolov8n.pt")
names = model.model.names
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
video_writer = cv2.VideoWriter("distance_calculation.avi",
cv2.VideoWriter_fourcc(*'mp4v'),
fps,
(w, h))
# Init distance-calculation obj
dist_obj = distance_calculation.DistanceCalculation()
dist_obj.set_args(names=names, view_img=True)
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 = dist_obj.start_process(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
рдиреЛрдЯ
- рдорд╛рдЙрд╕ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рд╕рднреА рдЦреАрдВрдЪреЗ рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛
- рдорд╛рдЙрд╕ рд▓реЗрдлреНрдЯ рдХреНрд▓рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдВрдХ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ set_args
рдирд╛рдо | рдкреНрд░рдХрд╛рд░ | рдЪреВрдХ | рдпрд╛ рдХрд╝рд┐рд╕реНтАНрдо |
---|---|---|---|
names |
dict |
None |
рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдирд╛рдо |
view_img |
bool |
False |
рдЧрд┐рдирддреА рдХреЗ рд╕рд╛рде рдлрд╝реНрд░реЗрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ |
line_thickness |
int |
2 |
рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдХреА рдореЛрдЯрд╛рдИ рдмрдврд╝рд╛рдПрдВ |
line_color |
RGB |
(255, 255, 0) |
рджреЛ рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдмреЙрдХреНрд╕ рдкрд░ рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рдореИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рд░рдВрдЧ |
centroid_color |
RGB |
(255, 0, 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 |
рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ |
2024-01-05 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-03-01
рд▓реЗрдЦрдХ: рд░рд┐рдЬрд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (5), рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (2), рдЖрдпреБрд╖рдПрдХреНрд╕реЗрд▓ (1)