一、本文介绍
开始之前先给大家展示一下视频效果图,以下两幅动图片来自于ultralytics官方->
Logistics | Aquaculture |
---|---|
![]() | ![]() |
Conveyor Belt Packets Counting Using Ultralytics YOLOv8 | Fish Counting in Sea using Ultralytics YOLguagua |
二、项目完整代码
帮我们将这个代码,复制粘贴到我们YOLOv8的仓库里然后创建一个py文件存放进去即可。
python
from ultralytics import YOLO
from ultralytics.solutions import object_counter
import cv2
model = YOLO("yolov8n.pt")
cap = cv2.VideoCapture("car.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)
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=True)
im0 = counter.start_counting(im0, tracks)
video_writer.write(im0)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
三、参数解析
下面上面项目核心代码的参数解析,共有3个,能够起到作用的参数并不多,这里直接截图说明以下即可。
下面红框内的两个参数,一个为权重文件地址(可替换为自己训练的权重文件),第二个就是需要检测的视频地址,这里如果有实时性需求的是可以改成视频流的形式的。
下面红框内的参数为,视频中我们检测线的大小,和宽细已经横线在视频中的横纵坐标。
四、项目的使用教程
4.1 步骤一
我们在Yolo仓库的目录下创建一个py文件将代码存放进去,如下图所示。
4.2 步骤二
我们填好参数之后运行文件即可,此时会弹出视频框,然后就可以看到检测的效果了,我这里的视频找不到静态的没办法大家只能对付看以下。