diff --git a/bob/bio/vein/database/utfvp.py b/bob/bio/vein/database/utfvp.py index c699fbd23d56585916fa5d6780285aa65b0bacda..7b15ef6a6a4c692e5ad978953ef1a6c0b772e489 100644 --- a/bob/bio/vein/database/utfvp.py +++ b/bob/bio/vein/database/utfvp.py @@ -1,31 +1,43 @@ #!/usr/bin/env python # vim: set fileencoding=utf-8 : -# Fri 04 Nov 2016 14:46:53 CET +# Tue 27 Sep 2016 16:48:57 CEST + from bob.bio.base.database import BioFile, BioDatabase +from . import AnnotatedArray +from ..preprocessor.utils import poly_to_mask + class File(BioFile): """ - Implements extra properties of vein files for the UTFVP Fingervein database + Implements extra properties of vein files for the UTFVP database Parameters: - f (object): Low-level file (or sample) object that is kept inside + f (object): Low-level file (or sample) object that is kept inside """ def __init__(self, f): - super(File, self).__init__(client_id=f.client_id, path=f.path, - file_id=f.id) + super(File, self).__init__(client_id=f.unique_finger_name, path=f.path, + file_id=f.id) self.__f = f + def load(self, *args, **kwargs): + """(Overrides base method) Loads both image and mask""" + + image = super(File, self).load(*args, **kwargs) + roi = self.__f.roi() + return AnnotatedArray(image, metadata=dict(roi=roi)) + + class Database(BioDatabase): """ - Implements verification API for querying UTFVP Fingervein database. + Implements verification API for querying UTFVP database. """ def __init__(self, **kwargs): @@ -34,22 +46,38 @@ class Database(BioDatabase): from bob.db.utfvp.query import Database as LowLevelDatabase self._db = LowLevelDatabase() + self.low_level_group_names = ('train', 'dev') + self.high_level_group_names = ('world', 'dev') + + def groups(self): + + return self.convert_names_to_highlevel(self._db.groups(), + self.low_level_group_names, self.high_level_group_names) + + def client_id_from_model_id(self, model_id, group='dev'): + """Required as ``model_id != client_id`` on this database""" + + return self._db.finger_name_from_model_id(model_id) + + def model_ids_with_protocol(self, groups=None, protocol=None, **kwargs): - protocol = protocol if protocol is not None else self.protocol + + groups = self.convert_names_to_lowlevel(groups, + self.low_level_group_names, self.high_level_group_names) return self._db.model_ids(groups=groups, protocol=protocol) + def objects(self, groups=None, protocol=None, purposes=None, model_ids=None, **kwargs): + groups = self.convert_names_to_lowlevel(groups, + self.low_level_group_names, self.high_level_group_names) retval = self._db.objects(groups=groups, protocol=protocol, - purposes=purposes, model_ids=model_ids, **kwargs) + purposes=purposes, model_ids=model_ids, + **kwargs) return [File(f) for f in retval] + def annotations(self, file): return None - - def client_id_from_model_id(self, model_id, group='dev'): - """Required as ``model_id != client_id`` on this database""" - - return self._db.get_client_id_from_model_id(model_id) diff --git a/bob/bio/vein/tests/test_databases.py b/bob/bio/vein/tests/test_databases.py index e3adf5ca0f828ccc0823dde04e0640d1dc2e58cb..d665d2710d2c4a1b8589d9155b546a106b23be27 100644 --- a/bob/bio/vein/tests/test_databases.py +++ b/bob/bio/vein/tests/test_databases.py @@ -14,8 +14,8 @@ def test_utfvp(): module = bob.bio.base.load_resource('utfvp', 'config', preferred_package='bob.bio.vein') try: - check_database(module.database, protocol=module.protocol, - groups=('dev', 'eval')) + check_database(module.database, protocol='nomLeftIndex', groups=('dev', + 'eval')) except IOError as e: raise SkipTest( "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e) @@ -52,4 +52,4 @@ def test_putvein(): check_database(module.database, protocol='wrist-LR_1', groups=('dev',)) except IOError as e: raise SkipTest( - "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e) \ No newline at end of file + "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)