Exemple #1
0
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)