这里我是用我本地训练的基于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 0
print(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:
break
else:
break
# 释放链接
cap.release()
# 销毁所有窗口
cv2.destroyAllWindows()