这里我是用我本地训练的基于yolov8环境的竹签计数模型,在打开摄像头窗口增加了实时计数显示的代码,可以直接运行,大家可以根据此代码进行修改,其底层原理时将检测出来的目标的个数显示了出来。
该项目链接:【目标检测】保姆级别教程从零开始实现基于Yolov8的一次性筷子实时计数,从数据集构建到模型训练与部署,手把手教学-CSDN博客
项目模型:【免费】基于yolov8的竹签计数的模型文件资源-CSDN文库
import cv2
from ultralytics import YOLO# 加载模型
model = YOLO(model=r"D:\yolov8\runs\detect\train\weights\best.pt")# 摄像头编号
camera_no = 1# 打开摄像头
cap = cv2.VideoCapture(camera_no)while cap.isOpened():# 获取图像res, frame = cap.read()# 如果读取成功if res:# 正向推理results = model(frame)# 绘制结果annotated_frame = results[0].plot()# 获取检测到的物体的数量num_objects = len(results[0].boxes) if results and results[0].boxes else 0print(f"竹签个数: {num_objects}")# 在图像左上角显示物体数量cv2.putText(annotated_frame, f"Number: {num_objects}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)# 显示图像cv2.imshow(winname="YOLOV8", mat=annotated_frame)# 按ESC退出if cv2.waitKey(1) == 27:breakelse:break# 释放链接
cap.release()
# 销毁所有窗口
cv2.destroyAllWindows()