Example #1
0
def generate_pointclouds_in_object_space(dbs, session, args):
    object_name = dbs[session.object_id]['object_name']
    if not os.path.exists(object_name):
        os.mkdir(object_name)
    obs_ids = models.find_all_observations_for_session(dbs, session.id)
    if len(obs_ids) == 0:
        raise RuntimeError("There are no observations available.")
    db_reader = capture.ObservationReader(
        'Database Source', db_params=dbtools.args_to_db_params(args))

    #observation dealer will deal out each observation id.
    observation_dealer = ecto.Dealer(
        tendril=db_reader.inputs.at('observation'), iterable=obs_ids)
    depthTo3d = calib.DepthTo3d('Depth ~> 3D')
    rescale_depth = capture.RescaledRegisteredDepth(
        'Depth scaling')  #this is for SXGA mode scale handling.
    point_cloud_transform = reconstruction.PointCloudTransform(
        'Object Space Transform', do_transform=False
    )  #keeps the points in camera coordinates, but populates the global sensor position and orientatino.
    point_cloud_converter = conversion.MatToPointCloudXYZRGB('To Point Cloud')
    to_ecto_pcl = ecto_pcl.PointCloudT2PointCloud('converter',
                                                  format=ecto_pcl.XYZRGB)
    plasm = ecto.Plasm()
    plasm.connect(observation_dealer[:] >> db_reader['observation'],
                  db_reader['K'] >> depthTo3d['K'],
                  db_reader['image'] >> rescale_depth['image'],
                  db_reader['depth'] >> rescale_depth['depth'],
                  rescale_depth[:] >> depthTo3d['depth'],
                  depthTo3d['points3d'] >> point_cloud_converter['points'],
                  db_reader['image'] >> point_cloud_converter['image'],
                  db_reader['mask'] >> point_cloud_converter['mask'],
                  db_reader['R', 'T'] >> point_cloud_transform['R', 'T'],
                  point_cloud_converter['point_cloud'] >> to_ecto_pcl[:],
                  to_ecto_pcl[:] >> point_cloud_transform['cloud'])
    ply_writer = ecto_pcl.PLYWriter('PLY Saver',
                                    filename_format='%s/cloud_%%05d.ply' %
                                    (object_name))
    pcd_writer = ecto_pcl.PCDWriter('PCD Saver',
                                    filename_format='%s/cloud_%%05d.pcd' %
                                    (object_name))
    plasm.connect(point_cloud_transform['view'] >> (ply_writer['input'],
                                                    pcd_writer['input']))

    if args.visualize:
        global cloud_view
        plasm.connect(
            point_cloud_transform['view'] >> cloud_view,
            db_reader['image'] >> imshows['image'],
            db_reader['depth'] >> imshows['depth'],
            db_reader['mask'] >> imshows['mask'],
        )

    from ecto.opts import run_plasm
    run_plasm(args, plasm, locals=vars())
def generate_pointclouds_in_object_space(dbs, session, args):
    object_name = dbs[session.object_id]['object_name']
    if not os.path.exists(object_name):
        os.mkdir(object_name)
    obs_ids = models.find_all_observations_for_session(dbs, session.id)
    if len(obs_ids) == 0:
        raise RuntimeError("There are no observations available.")
    db_reader = capture.ObservationReader('Database Source', db_params=dbtools.args_to_db_params(args))

    #observation dealer will deal out each observation id.
    observation_dealer = ecto.Dealer(tendril=db_reader.inputs.at('observation'), iterable=obs_ids)
    depthTo3d = calib.DepthTo3d('Depth ~> 3D')
    rescale_depth = capture.RescaledRegisteredDepth('Depth scaling') #this is for SXGA mode scale handling.
    point_cloud_transform = reconstruction.PointCloudTransform('Object Space Transform',do_transform=False)#keeps the points in camera coordinates, but populates the global sensor position and orientatino.
    point_cloud_converter = conversion.MatToPointCloudXYZRGB('To Point Cloud')
    to_ecto_pcl = ecto_pcl.PointCloudT2PointCloud('converter', format=ecto_pcl.XYZRGB)
    plasm = ecto.Plasm()
    plasm.connect(
      observation_dealer[:] >> db_reader['observation'],
      db_reader['K'] >> depthTo3d['K'],
      db_reader['image'] >> rescale_depth['image'],
      db_reader['depth'] >> rescale_depth['depth'],
      rescale_depth[:] >> depthTo3d['depth'],
      depthTo3d['points3d'] >> point_cloud_converter['points'],
      db_reader['image'] >> point_cloud_converter['image'],
      db_reader['mask'] >> point_cloud_converter['mask'],
      db_reader['R', 'T'] >> point_cloud_transform['R', 'T'],
      point_cloud_converter['point_cloud'] >> to_ecto_pcl[:],
      to_ecto_pcl[:] >> point_cloud_transform['cloud']
    )
    ply_writer = ecto_pcl.PLYWriter('PLY Saver',
                                      filename_format='%s/cloud_%%05d.ply' % (object_name))
    pcd_writer = ecto_pcl.PCDWriter('PCD Saver',
                                      filename_format='%s/cloud_%%05d.pcd' % (object_name))
    plasm.connect(point_cloud_transform['view'] >> (ply_writer['input'], pcd_writer['input'])
                  )

    if args.visualize:
        global cloud_view
        plasm.connect(
          point_cloud_transform['view'] >> cloud_view,
          db_reader['image'] >> imshows['image'],
          db_reader['depth'] >> imshows['depth'],
          db_reader['mask'] >> imshows['mask'],
          )

    from ecto.opts import run_plasm
    run_plasm(args, plasm, locals=vars())
from ecto_opencv import highgui
import object_recognition
from object_recognition import dbtools, models, capture

db_url = dbtools.DEFAULT_SERVER_URL

#database ritual
couch = couchdb.Server(db_url)
dbs = dbtools.init_object_databases(couch)
sessions = dbs['sessions']
observations = dbs['observations']
results = models.Session.all(sessions)
obs_ids = []

for session in results:
    obs_ids += models.find_all_observations_for_session(observations, session.id)

if len(obs_ids) == 0:
    raise RuntimeError("There are no observations available.")

db_reader = capture.ObservationReader('db_reader', db_params=ObjectDbParameters({'type':'CouchDB', 'root':db_url,
                                                                                 'collection':'observations'}))
#observation dealer will deal out each observation id.
observation_dealer = ecto.Dealer(tendril=db_reader.inputs.at('observation'), iterable=obs_ids)
fps = highgui.FPSDrawer('FPS drawer')
plasm = ecto.Plasm()
#View all of the observations.
plasm.connect(
    observation_dealer[:] >> db_reader['observation'],
    db_reader['image'] >> fps[:],
    fps[:] >> highgui.imshow('image display', name='image')[:],
from ecto_opencv import highgui
import object_recognition
from object_recognition import dbtools, models, capture

db_url = dbtools.DEFAULT_SERVER_URL

#database ritual
couch = couchdb.Server(db_url)
dbs = dbtools.init_object_databases(couch)
sessions = dbs['sessions']
observations = dbs['observations']
results = models.Session.all(sessions)
obs_ids = []

for session in results:
    obs_ids += models.find_all_observations_for_session(
        observations, session.id)

if len(obs_ids) == 0:
    raise RuntimeError("There are no observations available.")

db_reader = capture.ObservationReader('db_reader',
                                      db_params=ObjectDbParameters({
                                          'type':
                                          'CouchDB',
                                          'root':
                                          db_url,
                                          'collection':
                                          'observations'
                                      }))
#observation dealer will deal out each observation id.
observation_dealer = ecto.Dealer(tendril=db_reader.inputs.at('observation'),