From 25b0d1368e47a9a00a48235d15f052c9620c5f2a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Jan 2022 19:28:08 -0800 Subject: [PATCH] Fix `nan`-robust stream FPS Fix for Webcam stop working suddenly (Issue #6197) --- utils/datasets.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 79b871c9294b..6584342a621d 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -6,6 +6,7 @@ import glob import hashlib import json +import math import os import random import shutil @@ -308,8 +309,9 @@ def __init__(self, sources='streams.txt', img_size=640, stride=32, auto=True): assert cap.isOpened(), f'{st}Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - self.fps[i] = max(cap.get(cv2.CAP_PROP_FPS) % 100, 0) or 30.0 # 30 FPS fallback + fps = cap.get(cv2.CAP_PROP_FPS) # warning: may return 0 or nan self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback + self.fps[i] = max((fps if math.isfinite(fps) else 0) % 100, 0) or 30 # 30 FPS fallback _, self.imgs[i] = cap.read() # guarantee first frame self.threads[i] = Thread(target=self.update, args=([i, cap, s]), daemon=True)