@@ -34,7 +34,7 @@ def __iter__(self):
3434class _VideoStream :
3535 def __init__ (self , filepath ):
3636 self ._filepath = filepath
37- self ._video = cv .VideoCapture (filepath )
37+ self ._video = cv .VideoCapture (self . _filepath )
3838
3939 def __iter__ (self ):
4040 while True :
@@ -44,8 +44,21 @@ def __iter__(self):
4444 else :
4545 break
4646
47+ def __next__ (self ):
48+ while True :
49+ has_frame , frame = self ._video .read ()
50+ if has_frame :
51+ return frame
52+ else :
53+ break
54+
4755 def reload (self ):
48- self ._video = cv .VideoCapture (filepath )
56+ self ._video = cv .VideoCapture (self ._filepath )
57+
58+ def getFrameSize (self ):
59+ w = int (self ._video .get (cv .CAP_PROP_FRAME_WIDTH ))
60+ h = int (self ._video .get (cv .CAP_PROP_FRAME_HEIGHT ))
61+ return [w , h ]
4962
5063
5164class _BaseVideoLoader :
@@ -56,6 +69,10 @@ def __init__(self, **kwargs):
5669 self ._files = kwargs .pop ('files' , None )
5770 assert self ._files ,'Benchmark[\' data\' ][\' files\' ] cannot be empty.'
5871
72+ self ._streams = dict ()
73+ for filename in self ._files :
74+ self ._streams [filename ] = _VideoStream (os .path .join (self ._path , filename ))
75+
5976 @property
6077 def name (self ):
6178 return self .__class__ .__name__
@@ -64,4 +81,4 @@ def __len__(self):
6481 return len (self ._files )
6582
6683 def __getitem__ (self , idx ):
67- return self ._files [idx ], _VideoStream ( os . path . join ( self ._path , self . _files [idx ]))
84+ return self ._files [idx ], self ._streams [idx ]
0 commit comments