def TEST_GUI_IMPORT_IMAGES(ibs, back): print('[TEST] GET_TEST_IMAGE_PATHS') # The test api returns a list of interesting chip indexes mode = 'FILE' if mode == 'FILE': gpath_list = map(utool.unixpath, grabdata.get_test_gpaths()) # else: # dir_ = utool.truepath(join(sysres.get_workdir(), 'PZ_MOTHERS/images')) # gpath_list = utool.list_images(dir_, fullpath=True, recursive=True)[::4] print('[TEST] IMPORT IMAGES FROM FILE\n * gpath_list=%r' % gpath_list) gid_list = back.import_images(gpath_list=gpath_list) thumbtup_list = ibs.get_image_thumbtup(gid_list) imgpath_list = [tup[1] for tup in thumbtup_list] gpath_list2 = ibs.get_image_paths(gid_list) for path in gpath_list2: assert path in imgpath_list, "Imported Image not in db, path=%r" % path elif mode == 'DIR': dir_ = grabdata.get_testdata_dir() print('[TEST] IMPORT IMAGES FROM DIR\n * dir_=%r' % dir_) gid_list = back.import_images(dir_=dir_) else: raise AssertionError('unknown mode=%r' % mode) print('[TEST] * len(gid_list)=%r' % len(gid_list)) return locals()
def get_test_image(): img_fname = 'zebra.jpg' if '--zebra.png' in sys.argv: img_fname = 'zebra.jpg' if '--lena.png' in sys.argv: img_fname = 'lena.jpg' if '--jeff.png' in sys.argv: img_fname = 'jeff.png' imgdir = grabdata.get_testdata_dir() img_fpath = realpath(join(imgdir, img_fname)) return img_fpath
def get_test_image(): img_fname = 'zebra.jpg' if '--zebra.png' in sys.argv: img_fname = 'zebra.jpg' if '--lena.png' in sys.argv: img_fname = 'lena.jpg' if '--jeff.png' in sys.argv: img_fname = 'jeff.png' imgdir = grabdata.get_testdata_dir() img_fpath = realpath(join(imgdir, img_fname)) return img_fpath
def ingest_testdb1(db): from vtool.tests import grabdata def postingest_tesdb1_func(ibs): print('postingest_tesdb1_func') # Adjust data as we see fit import numpy as np gid_list = np.array(ibs.get_valid_gids()) unixtimes_even = (gid_list[0::2] + 100).tolist() unixtimes_odd = (gid_list[1::2] + 9001).tolist() unixtime_list = unixtimes_even + unixtimes_odd ibs.set_image_unixtime(gid_list, unixtime_list) # Unname first aid in every name aid_list = ibs.get_valid_aids() nid_list = ibs.get_annot_nids(aid_list) nid_list = [ (nid if nid > 0 else None) for nid in nid_list] unique_flag = utool.flag_unique_items(nid_list) unique_nids = utool.filter_items(nid_list, unique_flag) none_nids = [ nid is not None for nid in nid_list] flagged_nids = [nid for nid in unique_nids if nid_list.count(nid) > 1] plural_flag = [nid in flagged_nids for nid in nid_list] flag_list = map(all, izip(plural_flag, unique_flag, none_nids)) flagged_aids = utool.filter_items(aid_list, flag_list) if utool.VERYVERBOSE: def print2(*args): print('[post_testdb1] ' + ', '.join(args)) print2('aid_list=%r' % aid_list) print2('nid_list=%r' % nid_list) print2('unique_flag=%r' % unique_flag) print2('plural_flag=%r' % plural_flag) print2('unique_nids=%r' % unique_nids) print2('none_nids=%r' % none_nids) print2('flag_list=%r' % flag_list) print2('flagged_nids=%r' % flagged_nids) print2('flagged_aids=%r' % flagged_aids) # print2('new_nids=%r' % new_nids) # Unname, some annotations for testing delete_aids = utool.filter_items(aid_list, flag_list) ibs.delete_annot_nids(delete_aids) # Add all annotations with names as exemplars from ibeis.control.IBEISControl import IBEISController assert isinstance(ibs, IBEISController) unflagged_aids = utool.get_dirty_items(aid_list, flag_list) exemplar_flags = [True] * len(unflagged_aids) ibs.set_annot_exemplar_flag(unflagged_aids, exemplar_flags) return None return Ingestable(db, ingest_type='named_images', fmtkey=ibsfuncs.FMT_KEYS.name_fmt, img_dir=grabdata.get_testdata_dir(), adjust_percent=0.00, postingest_func=postingest_tesdb1_func)
def ingest_testdb1(dbname): """ ingest_testdb1 Example: >>> # DISABLE_DOCTEST >>> from ibeis.dbio.ingest_database import * # NOQA >>> import utool as ut >>> from vtool.tests import grabdata >>> import ibeis >>> grabdata.ensure_testdata() >>> # DELETE TESTDB1 >>> TESTDB1 = ut.unixjoin(ibeis.sysres.get_workdir(), 'testdb1') >>> ut.delete(TESTDB1, ignore_errors=False) >>> result = ingest_testdb1(dbname) """ from vtool.tests import grabdata # TODO: remove and use utool appdir def postingest_tesdb1_func(ibs): import numpy as np from ibeis import constants as const print('postingest_tesdb1_func') # Adjust data as we see fit gid_list = np.array(ibs.get_valid_gids()) # Set image unixtimes unixtimes_even = (gid_list[0::2] + 100).tolist() unixtimes_odd = (gid_list[1::2] + 9001).tolist() unixtime_list = unixtimes_even + unixtimes_odd ibs.set_image_unixtime(gid_list, unixtime_list) # Unname first aid in every name aid_list = ibs.get_valid_aids() nid_list = ibs.get_annot_name_rowids(aid_list) nid_list = [ (nid if nid > 0 else None) for nid in nid_list] unique_flag = ut.flag_unique_items(nid_list) unique_nids = ut.compress(nid_list, unique_flag) none_nids = [ nid is not None for nid in nid_list] flagged_nids = [nid for nid in unique_nids if nid_list.count(nid) > 1] plural_flag = [nid in flagged_nids for nid in nid_list] flag_list = list(map(all, zip(plural_flag, unique_flag, none_nids))) flagged_aids = ut.compress(aid_list, flag_list) if ut.VERYVERBOSE: def print2(*args): print('[post_testdb1] ' + ', '.join(args)) print2('aid_list=%r' % aid_list) print2('nid_list=%r' % nid_list) print2('unique_flag=%r' % unique_flag) print2('plural_flag=%r' % plural_flag) print2('unique_nids=%r' % unique_nids) print2('none_nids=%r' % none_nids) print2('flag_list=%r' % flag_list) print2('flagged_nids=%r' % flagged_nids) print2('flagged_aids=%r' % flagged_aids) # print2('new_nids=%r' % new_nids) # Unname, some annotations for testing unname_aids = ut.compress(aid_list, flag_list) ibs.delete_annot_nids(unname_aids) # Add all annotations with names as exemplars #from ibeis.control.IBEISControl import IBEISController #assert isinstance(ibs, IBEISController) unflagged_aids = ut.get_dirty_items(aid_list, flag_list) exemplar_flags = [True] * len(unflagged_aids) ibs.set_annot_exemplar_flags(unflagged_aids, exemplar_flags) # Set some test species labels species_text_list = ibs.get_annot_species_texts(aid_list) for ix in range(0, 6): species_text_list[ix] = const.TEST_SPECIES.ZEB_PLAIN # These are actually plains zebras. for ix in range(8, 10): species_text_list[ix] = const.TEST_SPECIES.ZEB_GREVY for ix in range(10, 12): species_text_list[ix] = const.TEST_SPECIES.BEAR_POLAR ibs.set_annot_species(aid_list, species_text_list) ibs.set_annot_notes(aid_list[8:10], ['this is actually a plains zebra'] * 2) ibs.set_annot_notes(aid_list[0:1], ['aid 1 and 2 are correct matches']) ibs.set_annot_notes(aid_list[6:7], ['very simple image to debug feature detector']) ibs.set_annot_notes(aid_list[7:8], ['standard test image']) # Set some randomish gps flags that are within nnp unixtime_list = ibs.get_image_unixtime(gid_list) valid_lat_min = -1.4446 valid_lat_max = -1.3271 valid_lon_min = 36.7619 valid_lon_max = 36.9622 valid_lat_range = valid_lat_max - valid_lat_min valid_lon_range = valid_lon_max - valid_lon_min randstate = np.random.RandomState(unixtime_list) new_gps_list = randstate.rand(len(gid_list), 2) new_gps_list[:, 0] = (new_gps_list[:, 0] * valid_lat_range) + valid_lat_min new_gps_list[:, 1] = (new_gps_list[:, 1] * valid_lon_range) + valid_lon_min new_gps_list[8, :] = [-1, -1] ibs.set_image_gps(gid_list, new_gps_list) # TODO: add a nan timestamp ibs.append_annot_case_tags([2], ['error:bbox']) ibs.append_annot_case_tags([4], ['quality:washedout']) ibs.append_annot_case_tags([4], ['lighting']) aidgroups = ibs.group_annots_by_name( ibs.filter_annots_general(min_pername=2, verbose=True))[0] aid1_list = ut.take_column(aidgroups, 0) aid2_list = ut.take_column(aidgroups, 1) annotmatch_rowids = ibs.add_annotmatch(aid1_list, aid2_list) ibs.set_annotmatch_truth(annotmatch_rowids, [True] * len(annotmatch_rowids)) ibs.set_annotmatch_truth(annotmatch_rowids, [True] * len(annotmatch_rowids)) ibs.set_annotmatch_prop('photobomb', annotmatch_rowids, [True] * len(annotmatch_rowids)) for aids in aidgroups: pass return None return Ingestable(dbname, ingest_type='named_images', fmtkey=FMT_KEYS.name_fmt, img_dir=grabdata.get_testdata_dir(), adjust_percent=0.00, postingest_func=postingest_tesdb1_func)