diff --git a/bob/pad/face/utils/__init__.py b/bob/pad/face/utils/__init__.py index 7e923999daa39177fae66025ea3b01460f8dc2d0..1b0b03c6e033c25748fdf0be22d1fc91d143c789 100644 --- a/bob/pad/face/utils/__init__.py +++ b/bob/pad/face/utils/__init__.py @@ -1,6 +1,6 @@ from .load_utils import ( frames, number_of_frames, yield_frames, yield_faces, scale_face, blocks, - bbx_cropper, min_face_size_normalizer) + bbx_cropper, min_face_size_normalizer, the_giant_video_loader) # gets sphinx autodoc done right - don't remove it __all__ = [_ for _ in dir() if not _.startswith('_')] diff --git a/bob/pad/face/utils/load_utils.py b/bob/pad/face/utils/load_utils.py index b1800fd97dc2461502edd3c159d5947b8700e3b1..30566afc2f68440c4d2bd0e886d4da673c2a7a3b 100644 --- a/bob/pad/face/utils/load_utils.py +++ b/bob/pad/face/utils/load_utils.py @@ -5,7 +5,6 @@ from bob.ip.base import scale, block, block_output_shape from bob.ip.facedetect import bounding_box_from_annotation from functools import partial import numpy -import six def frames(path): @@ -191,3 +190,18 @@ def blocks(data, block_size, block_overlap=(0, 0)): else: raise ValueError("Unknown data dimension {}".format(data.ndim)) return output + + +def the_giant_video_loader(paddb, padfile, + region='whole', scaling_factor=None, cropper=None, + normalizer=None): + generator = None + if region == 'whole': + generator = yield_frames(paddb, padfile) + elif region == 'crop': + generator = yield_faces( + paddb, padfile, cropper=cropper, normalizer=normalizer) + if scaling_factor is not None: + generator = (scale(frame, scaling_factor) + for frame in generator) + return generator