烽天降临联盟-网游跨服战场活动门户

检测摄像头的fps

6818

需求

项目中经常遇到不是摄像头就是网线的问题,曾经遇到一个项目算法日志一直报 warning,经过好几个小时的远程排查,发现是摄像头的 fps 不稳定,而且出现 fps 逐渐降低的情况,所以算法跑着跑着就挂了。

于是就需要开发一个测试 fps 的工具,工具倒是不复杂,主要依赖 opencv-python 库读取摄像头视频流。

代码

最基础版本

import argparse

import sys

import time

import cv2

parser = argparse.ArgumentParser()

ip = parser.add_argument("-i", "--ip", type=str)

args = parser.parse_args()

frame_id = 0

cap = cv2.VideoCapture(f"rtsp://username:password@{

args.ip}:554/Streaming/Channels/101")

while True:

try:

ret, frame = cap.read()

if not ret:

break

else:

frame_id += 1

if frame_id < 100:

remainder = frame_id % 5

if remainder == 0:

print(f"wait:{

'-' * (frame_id // 5)}>", end="\r")

if frame_id == 100:

time_start = time.time()

if frame_id > 100:

time_end = time.time()

print(

f"fps: {

(frame_id - 100) / (time_end - time_start)}",

end="\r",

)

except KeyboardInterrupt:

exit(-1)

\r 是回车符,光标会回到行首。但是只有一串数字输出,所以经过我的改良有了下面的一版: 改良版本

import argparse

import atexit

import sys

import time