عد الكائنات باستخدام Ultralytics YOLOv8 🚀
ما هو عد الكائنات؟
عد الكائنات باستخدام Ultralytics YOLOv8 يتضمن التحديد الدقيق وحساب كائنات معينة في مقاطع الفيديو وتدفقات الكاميرا. 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 |
طريقة التتبع "bytetrack" أو "botsort" |
conf |
float |
0.3 |
عتبة الثقة |
iou |
float |
0.5 |
عتبة IOU |
classes |
list |
None |
تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3] |
verbose |
bool |
True |
عرض نتائج تعقب الكائن |