def test_viz_image(imgpaths): nImgs = len(imgpaths) assert len(imgpaths) < 20, '%d > 20 out of scope of this test' % nImgs tau = np.pi * 2 fnum = 1 img_list = imread_many(imgpaths) nRows, nCols = ph.get_square_row_cols(nImgs) print('[viz*] r=%r, c=%r' % (nRows, nCols)) #gs2 = gridspec.GridSpec(nRows, nCols) pnum_ = df2.get_pnum_func(nRows, nCols) fig = df2.figure(fnum=fnum, pnum=pnum_(0)) fig.clf() for px, img in enumerate(img_list): title = 'test title' bbox_list = [dummy_bbox(img), dummy_bbox(img, (-.25, -.25), .1)] theta_list = [tau * .7, tau * .9] sel_list = [True, False] label_list = ['test label', 'lbl2'] viz_image2.show_image(img, bbox_list=bbox_list, title=title, sel_list=sel_list, label_list=label_list, theta_list=theta_list, fnum=fnum, pnum=pnum_(px))
def show_probability_chip(ibs, aid, species=None, fnum=None, config2_=None, **kwargs): """ TODO: allow species override in controller CommandLine: python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show --db PZ_Master1 python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show --db PZ_Master1 --aid 9970 Example: >>> # SCRIPT >>> from ibeis.viz.viz_hough import * # NOQA >>> import ibeis >>> from ibeis.viz import viz_chip >>> ibs, aid_list, kwargs, config2_ = viz_chip.testdata_showchip() >>> fnum = 1 >>> species = None >>> aid = aid_list[0] >>> fig, ax = show_probability_chip(ibs, aid, species, fnum, **kwargs) >>> ut.show_if_requested() """ fnum = pt.ensure_fnum(fnum) title = 'Probability Chip: ' + ', '.join(vh.get_annot_text(ibs, [aid], True)) hough_cpath = ibs.get_annot_probchip_fpath(aid, config2_=config2_) img = gtool.imread(hough_cpath) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def TEST_DETECT(ibs): # Create a HotSpotter API (hs) and GUI backend (back) print('get_valid_ANNOTATIONS') gid_list = ibs.get_valid_gids()[0:1] if SPECIAL: gid_list = utool.safe_slice(ibs.get_valid_gids(), 3) #gid_list.extend(ibs.add_images([utool.unixpath('~/Dropbox/Chuck/detect_testimg/testgrevy.jpg')])) species = 'zebra_grevys' detectkw = { 'quick': True, 'save_detection_images': SPECIAL, 'save_scales': SPECIAL, } detect_gen = randomforest.generate_detections(ibs, gid_list, species, **detectkw) gid_list2 = [] bbox_list2 = [] for gid, bboxes, confidences, img_conf in detect_gen: for bbox in bboxes: gid_list2.append(gid) bbox_list2.append(bbox) # not using confidence nor img_conf here if SPECIAL: from plottool import viz_image2, fig_presenter #from plottool import draw_func2 as df2 for gid in gid_list: isthisgid = [gid == gid2 for gid2 in gid_list2] bbox_list = utool.filter_items(bbox_list2, isthisgid) img = ibs.get_images(gid) fig = viz_image2.show_image(img, bbox_list=bbox_list) fig_presenter.present() #fig_presenter.all_figures_bring_to_front() #ibs.detect_random_forest(gid_list, 'zebra_grevys') return locals()
def show_hough_image(ibs, gid, species=None, fnum=None, **kwargs): if fnum is None: fnum = pt.next_fnum() title = 'Hough Image: ' + vh.get_image_titles(ibs, gid) print(title) if species is None: species = ibs.get_ #.cfg.detect_cfg.species_text src_gpath_list = ibs.get_image_detectpaths([gid]) dst_gpath_list = [splitext(gpath)[0] for gpath in src_gpath_list] hough_gpath_list = [ gpath + '_' + species + '_hough.png' for gpath in dst_gpath_list ] # Detect with hough config = { 'output_gpath_list': hough_gpath_list, } print('-' * 80) print('') print('WARNING!!!') print('Hough image is not used often and not worth putting into depcache.') print('This image is computed as needed and not cached to disk.') print('') print('-' * 80) results_list = list( randomforest.detect_gpath_list_with_species( # NOQA ibs, src_gpath_list, species, **config)) # Get path hough_gpath = hough_gpath_list[0] img = vt.imread(hough_gpath) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def show_probability_chip(ibs, aid, species=None, fnum=None, config2_=None, blend=False, **kwargs): """ TODO: allow species override in controller CommandLine: python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show --db PZ_Master1 python -m ibeis.viz.viz_hough --exec-show_probability_chip --cnn --show --db PZ_Master1 --aid 9970 Example: >>> # SCRIPT >>> from ibeis.viz.viz_hough import * # NOQA >>> import ibeis >>> from ibeis.viz import viz_chip >>> ibs, aid_list, kwargs, config2_ = viz_chip.testdata_showchip() >>> fnum = 1 >>> species = None >>> aid = aid_list[0] >>> fig, ax = show_probability_chip(ibs, aid, species, fnum, blend=True, **kwargs) >>> ut.show_if_requested() """ fnum = pt.ensure_fnum(fnum) title = 'Probability Chip: ' + ', '.join(vh.get_annot_text(ibs, [aid], True)) hough_cpath = ibs.get_annot_probchip_fpath(aid, config2_=config2_) img = vt.imread(hough_cpath) if blend: chip = ibs.get_annot_chips(aid, config2_=config2_) img = vt.blend_images_multiply(chip, vt.resize_mask(img, chip)) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def show_hough_image(ibs, gid, species=None, fnum=None, **kwargs): if fnum is None: fnum = pt.next_fnum() title = 'Hough Image: ' + vh.get_image_titles(ibs, gid) print(title) if species is None: species = ibs.cfg.detect_cfg.species_text src_gpath_list = ibs.get_image_detectpaths([gid]) dst_gpath_list = [splitext(gpath)[0] for gpath in src_gpath_list] hough_gpath_list = [gpath + '_' + species + '_hough.png' for gpath in dst_gpath_list] # Detect with hough config = { 'output_gpath_list': hough_gpath_list, } print('-' * 80) print('') print('WARNING!!!') print('Hough image is not used often and not worth putting into depcache.') print('This image is computed as needed and not cached to disk.') print('') print('-' * 80) results_list = list(randomforest.detect_gpath_list_with_species(ibs, src_gpath_list, species, **config)) # NOQA # Get path hough_gpath = hough_gpath_list[0] img = vt.imread(hough_gpath) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def show_hough(ibs, gid, species, fnum=None, **kwargs): if fnum is None: fnum = df2.next_fnum() title = 'Hough Image: ' + vh.get_image_titles(ibs, gid) print(title) hough_gpath = randomforest.get_image_hough_gpaths(ibs, [gid], species)[0] img = gtool.imread(hough_gpath) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def plot_image(self, index): px = index - self.start_index gpath = self.gpath_list[index] if self.vizkw is None: _vizkw = {} else: _vizkw = self.vizkw.copy() _vizkw.update({ 'fnum': self.fnum, 'pnum': self.pnum_(px), }) if ut.is_funclike(gpath): showfunc = gpath # HACK # override of plot image function showfunc(**_vizkw) import plottool as pt ax = pt.gca() else: if isinstance(gpath, six.string_types): img = vt.imread(gpath) else: img = gpath bbox_list = self.bboxes_list[index] #print('bbox_list %r in display for px: %r ' % (bbox_list, px)) theta_list = self.thetas_list[index] label_list = [ix + 1 for ix in range(len(bbox_list))] #Add true values for every bbox to display sel_list = [True for ix in range(len(bbox_list))] _vizkw.update({ #title should always be the image number 'title': str(index), 'bbox_list': bbox_list, 'theta_list': theta_list, 'sel_list': sel_list, 'label_list': label_list, }) #print(utool.dict_str(_vizkw)) #print('vizkw = ' + utool.dict_str(_vizkw)) _, ax = viz_image2.show_image(img, **_vizkw) if self.xlabel_list is not None: import plottool as pt pt.set_xlabel(self.xlabel_list[index]) #print(index) ph.set_plotdat(ax, 'bbox_list', bbox_list) ph.set_plotdat(ax, 'gpath', gpath) ph.set_plotdat(ax, 'px', str(px)) ph.set_plotdat(ax, 'index', index)
def plot_image(self, index): px = index - self.start_index gpath = self.gpath_list[index] if self.vizkw is None: _vizkw = {} else: _vizkw = self.vizkw.copy() _vizkw.update({ 'fnum': self.fnum, 'pnum': self.pnum_(px), }) if ut.is_funclike(gpath): showfunc = gpath # HACK # override of plot image function showfunc(**_vizkw) import plottool as pt ax = pt.gca() else: if isinstance(gpath, six.string_types): img = vt.imread(gpath) else: img = gpath bbox_list = self.bboxes_list[index] #print('bbox_list %r in display for px: %r ' % (bbox_list, px)) theta_list = self.thetas_list[index] label_list = [ix + 1 for ix in range(len(bbox_list))] #Add true values for every bbox to display sel_list = [True for ix in range(len(bbox_list))] _vizkw.update({ #title should always be the image number 'title': str(index), 'bbox_list' : bbox_list, 'theta_list' : theta_list, 'sel_list' : sel_list, 'label_list' : label_list, }) #print(utool.dict_str(_vizkw)) #print('vizkw = ' + utool.dict_str(_vizkw)) _, ax = viz_image2.show_image(img, **_vizkw) if self.xlabel_list is not None: import plottool as pt pt.set_xlabel(self.xlabel_list[index]) #print(index) ph.set_plotdat(ax, 'bbox_list', bbox_list) ph.set_plotdat(ax, 'gpath', gpath) ph.set_plotdat(ax, 'px', str(px)) ph.set_plotdat(ax, 'index', index)
def test_viz_image(img_fpath): # Read image img = cv2.imread(img_fpath) tau = np.pi * 2 # References: tauday.com # Create figure fig = df2.figure(fnum=42, pnum=(1, 1, 1)) # Clear figure fig.clf() # Build parameters bbox_list = [dummy_bbox(img), dummy_bbox(img, (-.25, -.25), .1)] showkw = { 'title': 'test axis title', # The list of bounding boxes to be drawn on the image 'bbox_list': bbox_list, 'theta_list': [tau * .7, tau * .9], 'sel_list': [True, False], 'label_list': ['test label', 'lbl2'], } # Print the keyword arguments to illustrate their format print('showkw = ' + utool.dict_str(showkw)) # Display the image in figure-num 42, using a 1x1 axis grid in the first # axis. Pass showkw as keyword arguments. viz_image2.show_image(img, fnum=42, pnum=(1, 1, 1), **showkw) df2.set_figtitle('Test figure title')
def test_viz_image(img_fpath): # Read image img = cv2.imread(img_fpath) tau = np.pi * 2 # References: tauday.com # Create figure fig = df2.figure(fnum=42, pnum=(1, 1, 1)) # Clear figure fig.clf() # Build parameters bbox_list = [dummy_bbox(img), dummy_bbox(img, (-0.25, -0.25), 0.1)] showkw = { "title": "test axis title", # The list of bounding boxes to be drawn on the image "bbox_list": bbox_list, "theta_list": [tau * 0.7, tau * 0.9], "sel_list": [True, False], "label_list": ["test label", "lbl2"], } # Print the keyword arguments to illustrate their format print("showkw = " + utool.dict_str(showkw)) # Display the image in figure-num 42, using a 1x1 axis grid in the first # axis. Pass showkw as keyword arguments. viz_image2.show_image(img, fnum=42, pnum=(1, 1, 1), **showkw) df2.set_figtitle("Test figure title")
def show_hough_image(ibs, gid, species=None, fnum=None, **kwargs): if fnum is None: fnum = pt.next_fnum() title = 'Hough Image: ' + vh.get_image_titles(ibs, gid) print(title) if species is None: species = ibs.cfg.detect_cfg.species_text src_gpath_list = ibs.get_image_detectpaths([gid]) dst_gpath_list = [splitext(gpath)[0] for gpath in src_gpath_list] hough_gpath_list = [gpath + '_' + species + '_hough.png' for gpath in dst_gpath_list] # Detect with hough config = { 'output_gpath_list': hough_gpath_list, } results_list = list(randomforest.detect_gpath_list_with_species(ibs, src_gpath_list, species, **config)) # NOQA # Get path hough_gpath = hough_gpath_list[0] img = gtool.imread(hough_gpath) fig, ax = viz_image2.show_image(img, title=title, fnum=fnum, **kwargs) return fig, ax
def show_image(ibs, gid, sel_aids=[], fnum=None, annote=True, draw_lbls=True, notitle=False, rich_title=False, pnum=(1, 1, 1), **kwargs): """ Driver function to show images Args: ibs (IBEISController): ibeis controller object gid (int): image row id sel_aids (list): fnum (int): figure number annote (bool): draw_lbls (bool): Returns: tuple: (fig, ax) CommandLine: python -m ibeis.viz.viz_image --test-show_image --show python -m ibeis.viz.viz_image --test-show_image --show --db GZ_ALL python -m ibeis.viz.viz_image --test-show_image --show --db GZ_ALL --gid 100 python -m ibeis.viz.viz_image --test-show_image --show --db PZ_MTEST --aid 10 python -m ibeis.viz.viz_image --test-show_image --show --db PZ_MTEST --aid 91 --no-annot --rich-title python -m ibeis.viz.viz_image --test-show_image --show --db GIR_Tanya --aid 1 --no-annot --rich-title Example: >>> # SLOW_DOCTEST >>> # VIZ_TEST >>> from ibeis.viz.viz_image import * # NOQA >>> import ibeis >>> # build test data >>> ibs = ibeis.opendb(ut.get_argval('--db', str, 'testdb1')) >>> #gid = ibs.get_valid_gids()[0] >>> gid = ut.get_argval('--gid', int, 1) >>> aid = ut.get_argval('--aid', int, None) >>> if aid is not None: >>> gid = ibs.get_annot_gids(aid) >>> sel_aids = [] >>> fnum = None >>> annote = not ut.get_argflag('--no-annot') >>> rich_title = ut.get_argflag('--rich-title') >>> draw_lbls = True >>> # execute function >>> (fig, ax) = show_image(ibs, gid, sel_aids, fnum, annote, draw_lbls, rich_title) >>> pt.show_if_requested() """ if fnum is None: fnum = pt.next_fnum() # Read Image img = ibs.get_images(gid) aid_list = ibs.get_image_aids(gid) if sel_aids == 'all': sel_aids = aid_list annotekw = get_annot_annotations(ibs, aid_list, sel_aids, draw_lbls) annotation_centers = vh.get_bbox_centers(annotekw['bbox_list']) title = vh.get_image_titles(ibs, gid) if rich_title: title += ', aids=%r' % (aid_list) title += ', db=%r' % (ibs.get_dbname()) showkw = { 'title' : title, 'annote' : annote, 'fnum' : fnum, 'pnum' : pnum, } if notitle: del showkw['title'] showkw.update(annotekw) fig, ax = viz_image2.show_image(img, **showkw) # Label the axis with data ph.set_plotdat(ax, 'annotation_centers', annotation_centers) ph.set_plotdat(ax, 'aid_list', aid_list) ph.set_plotdat(ax, 'viztype', 'image') ph.set_plotdat(ax, 'gid', gid) return fig, ax