Download benchmark/utils/dataloaders/base_dataloader.py from ytfeng/opencv_zoo: direct link, hf CLI and curl.
- Browser
- Download file 2.43 kB
-
https://huggingface.co/ytfeng/opencv_zoo/resolve/main/benchmark/utils/dataloaders/base_dataloader.py
- Command line
-
hf download hf://ytfeng/opencv_zoo/benchmark/utils/dataloaders/base_dataloader.py
-
curl -L -o base_dataloader.py https://huggingface.co/ytfeng/opencv_zoo/resolve/main/benchmark/utils/dataloaders/base_dataloader.py
2.43 kB
| import os | |
| import cv2 as cv | |
| class _BaseImageLoader: | |
| def __init__(self, **kwargs): | |
| self._path = kwargs.pop('path', None) | |
| assert self._path, 'Benchmark[\'data\'][\'path\'] cannot be empty.' | |
| self._files = kwargs.pop('files', None) | |
| assert self._files, 'Benchmark[\'data\'][\'files\'] cannot be empty' | |
| self._len_files = len(self._files) | |
| self._sizes = kwargs.pop('sizes', [[0, 0]]) | |
| self._len_sizes = len(self._sizes) | |
| def name(self): | |
| return self.__class__.__name__ | |
| def __len__(self): | |
| return self._len_files * self._len_sizes | |
| def __iter__(self): | |
| for filename in self._files: | |
| image = cv.imread(os.path.join(self._path, filename)) | |
| if [0, 0] in self._sizes: | |
| yield filename, image | |
| else: | |
| for size in self._sizes: | |
| image_r = cv.resize(image, size) | |
| yield filename, image_r | |
| class _VideoStream: | |
| def __init__(self, filepath): | |
| self._filepath = filepath | |
| self._video = cv.VideoCapture(self._filepath) | |
| def __iter__(self): | |
| while True: | |
| has_frame, frame = self._video.read() | |
| if has_frame: | |
| yield frame | |
| else: | |
| break | |
| def __next__(self): | |
| while True: | |
| has_frame, frame = self._video.read() | |
| if has_frame: | |
| return frame | |
| else: | |
| break | |
| def reload(self): | |
| self._video = cv.VideoCapture(self._filepath) | |
| def getFrameSize(self): | |
| w = int(self._video.get(cv.CAP_PROP_FRAME_WIDTH)) | |
| h = int(self._video.get(cv.CAP_PROP_FRAME_HEIGHT)) | |
| return [w, h] | |
| class _BaseVideoLoader: | |
| def __init__(self, **kwargs): | |
| self._path = kwargs.pop('path', None) | |
| assert self._path, 'Benchmark[\'data\'][\'path\'] cannot be empty.' | |
| self._files = kwargs.pop('files', None) | |
| assert self._files,'Benchmark[\'data\'][\'files\'] cannot be empty.' | |
| self._streams = dict() | |
| for filename in self._files: | |
| self._streams[filename] = _VideoStream(os.path.join(self._path, filename)) | |
| def name(self): | |
| return self.__class__.__name__ | |
| def __len__(self): | |
| return len(self._files) | |
| def __getitem__(self, idx): | |
| return self._files[idx], self._streams[idx] |