def main(): import argparse parser = argparse.ArgumentParser() parser.add_argument('--dataset', default='overhand_knot', help='name of dataset') parser.add_argument('--method', choices=['geodesic_dist', 'shape_context', 'geodesic_dist+shape_context'], default='geodesic_dist', help='matching algorithm') parser.add_argument('input', type=str) parser.add_argument('--show_shape_context', action='store_true') parser.add_argument('--save_input', type=str, default='') args = parser.parse_args() dataset = recognition.DataSet.LoadFromTaskDemos(args.dataset) # read input to match input_xyz = cloud_io.read_from_rsrc(args.input) if args.save_input: cloud_io.write_cloud(args.save_input, input_xyz) # create the matcher matcher = None if args.method == 'geodesic_dist': matcher = recognition.GeodesicDistMatcher(dataset) elif args.method == 'shape_context': matcher = recognition.ShapeContextMatcher(dataset) elif args.method == 'geodesic_dist+shape_context': matcher = recognition.CombinedNNMatcher(dataset, [recognition.GeodesicDistMatcher, recognition.ShapeContextMatcher], [1, 0.1]) else: raise NotImplementedError # do the matching best_match_name, best_match_cost = matcher.match(input_xyz) print 'Best match name:', best_match_name, 'with cost:', best_match_cost draw_comparison(left_cloud=input_xyz, right_cloud=dataset[best_match_name], show_shape_context=args.show_shape_context)
def main(): import argparse parser = argparse.ArgumentParser() parser.add_argument('clouds', nargs='+', help='cloud resource srings') args = parser.parse_args() assert len(args.clouds) == 2 import cloud_io print 'loading clouds' clouds = [cloud_io.read_from_rsrc(c) for c in args.clouds] print 'processing' clouds_ds = [recognition.downsample(c)[0] for c in clouds] # hists_ds = [recognition.calc_shape_context_hists(dc) for dc in clouds_ds] f, partners, hists0, hists1, costs = recognition.match_and_calc_shape_context(clouds_ds[0], clouds_ds[1], return_tuple=True) left_data = { 'xyz': clouds[0], 'xyz_ds': clouds_ds[0], 'hists_ds': hists0 } right_data = { 'xyz': clouds[1], 'xyz_ds': clouds_ds[1], 'hists_ds': hists1 } corr_data = { 'f': f, 'partners': partners, 'costs': costs } print 'drawing' draw_comparison(left_data, right_data, corr_data)
def main(): import argparse parser = argparse.ArgumentParser() parser.add_argument('clouds', nargs='+', help='cloud resource srings') args = parser.parse_args() assert len(args.clouds) == 2 import cloud_io print 'loading clouds' clouds = [cloud_io.read_from_rsrc(c) for c in args.clouds] print 'processing' clouds_ds = [recognition.downsample(c)[0] for c in clouds] # hists_ds = [recognition.calc_shape_context_hists(dc) for dc in clouds_ds] f, partners, hists0, hists1, costs = recognition.match_and_calc_shape_context( clouds_ds[0], clouds_ds[1], return_tuple=True) left_data = {'xyz': clouds[0], 'xyz_ds': clouds_ds[0], 'hists_ds': hists0} right_data = {'xyz': clouds[1], 'xyz_ds': clouds_ds[1], 'hists_ds': hists1} corr_data = {'f': f, 'partners': partners, 'costs': costs} print 'drawing' draw_comparison(left_data, right_data, corr_data)