代码如下:
from ultralytics import YOLO
import cv2
from cv2 import getTickCount, getTickFrequency
yolo=YOLO('./yolov8n.pt')
#摄像头实时检测
cap = cv2.VideoCapture(0)
while cap.isOpened():
    loop_start = getTickCount()  #记录循环开始的时间,用于计算每一帧的处理时间
    success, frame = cap.read()  # 读取摄像头的一帧图像
    if success:
        results = yolo.predict(source=frame)  # 对当前帧进行目标检测并显示结果
    annotated_frame = results[0].plot()   #将检测结果绘制在图像上,得到带有目标框的图像。
    # 显示程序
    loop_time = getTickCount() - loop_start #计算处理一帧图像所花费的时间。
    total_time = loop_time / (getTickFrequency())  #将处理时间转换为秒数。
    FPS = int(1 / total_time) #FPS计算
    # 在图像左上角添加FPS文本
    fps_text = f"FPS: {FPS:.2f}"#构造显示帧率的文本字符串
    font = cv2.FONT_HERSHEY_SIMPLEX#选择字体类型
    font_scale = 1  #设置字体的缩放比例
    font_thickness = 2 #设置字体的粗细
    text_color = (0, 0, 255)  # 红色
    text_position = (10, 30)  # 左上角位置
    cv2.putText(annotated_frame, fps_text, text_position, font, font_scale, text_color, font_thickness)
    cv2.imshow('Real-time detection', annotated_frame)
    # 通过按下 'q' 键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口 
测试结果展示:




















