import os | |
import numpy as np | |
import cv2 as cv | |
from .base_dataloader import _BaseImageLoader | |
from ..factory import DATALOADERS | |
class RecognitionImageLoader(_BaseImageLoader): | |
def __init__(self, **kwargs): | |
super().__init__(**kwargs) | |
self._labels = self._load_label() | |
def _load_label(self): | |
labels = dict.fromkeys(self._files, None) | |
for filename in self._files: | |
if os.path.exists(os.path.join(self._path, '{}.txt'.format(filename[:-4]))): | |
labels[filename] = np.loadtxt(os.path.join(self._path, '{}.txt'.format(filename[:-4])), ndmin=2) | |
else: | |
labels[filename] = None | |
return labels | |
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, self._labels[filename] | |
else: | |
for size in self._sizes: | |
image_r = cv.resize(image, size) | |
yield filename, image_r, self._labels[filename] |