You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在YOLOv5中集成代码实现摄像头检测画面FPS显示

你无法直接运行参考FPS代码的核心原因是:参考代码独立调用cv2.VideoCapture(0)抢占摄像头资源,和YOLOv5自带的视频流读取、推理、绘制逻辑冲突。不需要重新写摄像头初始化、窗口显示、资源释放的逻辑,只需要把FPS计算、文字绘制的片段嵌入YOLOv5已有的推理流程即可,操作步骤如下:

具体修改方法

1. 确认依赖导入

打开项目根目录下的detect.py,检查文件顶部的导入区,确保已经导入time和cv2库,缺失的话直接补上:

import time
import cv2

2. 初始化FPS计数变量

在detect.py中找到帧遍历循环的入口,也就是for path, im, im0s, vid_cap, s in dataset:这行代码的上方,添加FPS计算的初始化变量:

fps_start_time = time.time()
current_fps = 0

3. 嵌入FPS计算与绘制逻辑

在帧遍历循环内部,找到im0 = annotator.result()这行(这行的作用是返回已经画完所有检测框的结果帧),在它后面直接插入你参考代码里的FPS计算、绘制逻辑,注意把绘制目标帧从原来的frame改成YOLOv5的结果帧im0:

# 计算当前帧FPS
fps_end_time = time.time()
time_diff = fps_end_time - fps_start_time
current_fps = 1 / time_diff
fps_start_time = fps_end_time
fps_text = "FPS:  {:.2f}".format(current_fps)
# 将FPS文字绘制到结果帧左上角
cv2.putText(im0, fps_text, (5, 30), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,255), 1)

注意事项

  • 上述位置插入的FPS统计覆盖了帧读取、模型前处理、推理、后处理、检测框绘制的全流程,如果只想统计摄像头读流的FPS,可以把FPS计算代码挪到帧读取完成、模型前处理开始之前的位置。
  • 运行初期前几帧FPS数值偏低是模型warmup的正常现象,运行2-3秒后数值会稳定到真实水平。
  • 不需要修改原有cv2.imshow、cv2.waitKey、摄像头资源释放的逻辑,YOLOv5源码已经处理了这部分流程,修改完直接按原来的命令python detect.py --source 0运行即可看到左上角的FPS显示。

内容的提问来源于stack exchange,提问作者AbdullahEmin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:18:33