From e6d9ced61be01282c13e8df624aff40533dc6b0c Mon Sep 17 00:00:00 2001 From: mucunwuxian Date: Mon, 19 Sep 2022 15:19:07 +0900 Subject: [PATCH 1/3] The following code is slow, "self.cap.set(cv2.CAP_PROP_POS_FRAMES, self.vid_stride * (self.frame + 1)) # read at vid_stride". --- utils/dataloaders.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 5c3460eb0d6e..5b03b4eb9759 100644 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -232,8 +232,9 @@ def __next__(self): if self.video_flag[self.count]: # Read video self.mode = 'video' - ret_val, im0 = self.cap.read() - self.cap.set(cv2.CAP_PROP_POS_FRAMES, self.vid_stride * (self.frame + 1)) # read at vid_stride + for _ in range(self.vid_stride): + self.cap.grab() + ret_val, im0 = self.cap.retrieve() while not ret_val: self.count += 1 self.cap.release() From 26a2a1eead19fa0abbcc377ab71dcb7589d232de Mon Sep 17 00:00:00 2001 From: mucunwuxian Date: Mon, 19 Sep 2022 15:24:32 +0900 Subject: [PATCH 2/3] adjust... --- utils/dataloaders.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 5b03b4eb9759..4aabfb613795 100644 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -232,9 +232,10 @@ def __next__(self): if self.video_flag[self.count]: # Read video self.mode = 'video' - for _ in range(self.vid_stride): - self.cap.grab() + self.cap.grab() ret_val, im0 = self.cap.retrieve() + for _ in range(self.vid_stride - 1): + self.cap.grab() while not ret_val: self.count += 1 self.cap.release() From 8b04788dd197f5e324c76f7022ca06265c75d879 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Sep 2022 13:54:35 +0200 Subject: [PATCH 3/3] Update dataloaders.py Signed-off-by: Glenn Jocher --- utils/dataloaders.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/dataloaders.py b/utils/dataloaders.py index 4aabfb613795..5b03b4eb9759 100644 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -232,10 +232,9 @@ def __next__(self): if self.video_flag[self.count]: # Read video self.mode = 'video' - self.cap.grab() - ret_val, im0 = self.cap.retrieve() - for _ in range(self.vid_stride - 1): + for _ in range(self.vid_stride): self.cap.grab() + ret_val, im0 = self.cap.retrieve() while not ret_val: self.count += 1 self.cap.release()