|
|
|
|
|
from data.base_dataset import BaseDataset, get_transform, get_params |
|
|
from data.image_folder import make_dataset |
|
|
from PIL import Image |
|
|
|
|
|
|
|
|
class SingleFolderDataset(BaseDataset): |
|
|
""" |
|
|
A dataset class for loading images from a single folder. |
|
|
Used for testing where only content images are needed. |
|
|
""" |
|
|
|
|
|
@staticmethod |
|
|
def modify_commandline_options(parser, is_train): |
|
|
|
|
|
parser.add_argument('--image_dir', type=str, required=True, |
|
|
help='path to the directory that contains images') |
|
|
|
|
|
|
|
|
|
|
|
parser.set_defaults(preprocess_mode='resize_and_crop', load_size=256, crop_size=256, no_flip=True) |
|
|
return parser |
|
|
|
|
|
def __init__(self, opt): |
|
|
super().__init__() |
|
|
self.opt = opt |
|
|
self.image_paths = sorted(make_dataset(opt.image_dir, recursive=True)) |
|
|
|
|
|
|
|
|
def __getitem__(self, index): |
|
|
path = self.image_paths[index] |
|
|
img = Image.open(path).convert('RGB') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
params = get_params(self.opt, img.size) |
|
|
if not self.opt.isTrain: |
|
|
params['crop_pos'] = (0, 0) |
|
|
params['flip'] = False |
|
|
|
|
|
transform = get_transform(self.opt, params, normalize=True) |
|
|
img_tensor = transform(img) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return {'day': img_tensor, 'cpath': path} |
|
|
|
|
|
def __len__(self): |
|
|
return len(self.image_paths) |