22import os
33
44import cv2
5+ from tqdm import tqdm
56
67from loguru import logger
78from numpy import ndarray
@@ -38,6 +39,7 @@ def __init__(self, input_file=None):
3839 assert isinstance (self ._input_type , str )
3940 except AssertionError :
4041 self ._input_type = ""
42+ self ._progress_bar = None
4143 self .load_data ()
4244
4345 def load_data (self ):
@@ -70,6 +72,12 @@ def video_len(self):
7072 def fps (self ):
7173 return int (self .cap .get (cv2 .CAP_PROP_FPS ))
7274
75+ @property
76+ def progress_bar (self ):
77+ if not self ._progress_bar :
78+ self ._progress_bar = tqdm (total = int (self .video_len - self .fps + 1 ))
79+ return self ._progress_bar
80+
7381 def show (self , frame , frame_name = "video" ):
7482 cv2 .imshow (frame_name , frame )
7583
@@ -86,6 +94,7 @@ def write_video(self, output_path=".", filename="output_video.mp4"):
8694 def next_frame (self , quit_key = "q" ):
8795 """Returns the next image from either a video file or webcam."""
8896 while self .cap .isOpened ():
97+ self .progress_bar .update (1 )
8998 flag = False
9099 for _ in range (1 ):
91100 flag , frame = self .cap .read ()
@@ -104,5 +113,7 @@ def close(self):
104113 """Closes the VideoCapture."""
105114 if "image" in self ._input_type :
106115 self .cap .release ()
116+ if self .progress_bar :
117+ self .progress_bar .close ()
107118 cv2 .destroyAllWindows ()
108119 logger .info ("============ CleanUp! ============" )
0 commit comments