From 72035ee5ccf7b04285b12f7e7f0cb2ca2efec57d Mon Sep 17 00:00:00 2001
From: Amir MOHAMMADI <amir.mohammadi@idiap.ch>
Date: Mon, 16 Apr 2018 15:55:45 +0200
Subject: [PATCH] Add the giant video loader

---
 bob/pad/face/utils/__init__.py   |  2 +-
 bob/pad/face/utils/load_utils.py | 16 +++++++++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/bob/pad/face/utils/__init__.py b/bob/pad/face/utils/__init__.py
index 7e923999..1b0b03c6 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 b1800fd9..30566afc 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
-- 
GitLab