Example #1
0
def visualize_animation():

    k = KinectImage.Kinect()
    k.start()

    pcd = open3d.PointCloud()

    vis = open3d.Visualizer()

    vis.create_window()

    before = time.time()

    for i in range(10):
        pointcloud = k.get_pointcloud()
        d = pointcloud[:, :3]
        c = pointcloud[:, 3:]
        pcd.points = open3d.Vector3dVector(d)
        pcd.colors = open3d.Vector3dVector(c)
        vis.add_geometry(pcd)
        vis.update_geometry()
        vis.reset_view_point(True)
        vis.poll_events()
        vis.update_renderer()
    after = time.time()
    print("Loop time:", after - before)
    k.stop()
def main_display_cloud():
    global received_ros_cloud
    # Set viewer
    open3d_cloud = open3d.PointCloud()
    vis = open3d.Visualizer()
    vis.create_window()
    vis.add_geometry(open3d_cloud)

    # Loop
    rate = rospy.Rate(100)
    cnt = 0
    while not rospy.is_shutdown():
        if received_ros_cloud is not None:
            cnt += 1
            idx_method = 1
            if idx_method == 1:
                tmp = convertCloudFromRosToOpen3d(received_ros_cloud)
                copyOpen3dCloud(tmp, open3d_cloud)
                vis.add_geometry(open3d_cloud)
            if idx_method == 2:  # this is not working!!!
                open3d_cloud = convertCloudFromRosToOpen3d(received_ros_cloud)
            if idx_method == 3:  # this is keep adding clouds to viewer
                open3d_cloud = convertCloudFromRosToOpen3d(received_ros_cloud)
                vis.add_geometry(open3d_cloud)
            vis.update_geometry()
            print("Updating geometry for the {}th time".format(cnt))
            received_ros_cloud = None  # clear
        vis.poll_events()
        vis.update_renderer()
        rate.sleep()
        # print("Updating viewer")

    # Return
    vis.destroy_window()
Example #3
0
def camera_shape_create():
    '''
    生成相机的外形
    Returns:

    '''
    triangle_points = 0.05 * np.array([[1, 1, 2], [1, -1, 2], [-1, -1, 2],[-1, 1,2],[0, 0, 0]], dtype=np.float32)
    lines = [[0, 1], [1, 2], [2, 3],[0,3],[0,4],[1,4],[2,4],[3,4]]  # Right leg
    colors = [[0, 0, 1] for i in range(len(lines))]  # Default blue
    # 定义三角形的三个角点
    point_pcd = open3d.geometry.PointCloud()  # 定义点云
    point_pcd.points = open3d.Vector3dVector(triangle_points)

    # 定义三角形三条连接线
    line_pcd = open3d.LineSet()
    line_pcd.lines = open3d.Vector2iVector(lines)
    line_pcd.colors = open3d.Vector3dVector(colors)
    line_pcd.points = open3d.Vector3dVector(triangle_points)
    open3d.write_line_set("../data/testDate/a.ply",line_pcd)
    vis = open3d.Visualizer()
    vis.create_window(window_name='Open3D_1', width=600, height=600, left=10, top=10, visible=True)
    vis.get_render_option().point_size = 20

    vis.add_geometry(line_pcd)
    while True:
        vis.update_geometry()
        vis.poll_events()
        vis.update_renderer()
        cv2.waitKey(100)
def main():
    parser = argparse.ArgumentParser(description="Argument Parser")
    parser.add_argument("--floor_height",
                        type=float,
                        default=0.03,
                        help="the z coordinate of the floor")
    args = parser.parse_args()
    np.set_printoptions(precision=4, suppress=True)
    bot = Robot("locobot")
    bot.camera.set_pan_tilt(0, 0.7, wait=True)
    bot.arm.go_home()
    bot.arm.set_joint_positions([1.96, 0.52, -0.51, 1.67, 0.01], plan=False)
    vis = open3d.Visualizer()
    vis.create_window("3D Map")
    pcd = open3d.PointCloud()
    coord = open3d.create_mesh_coordinate_frame(1, [0, 0, 0])
    vis.add_geometry(pcd)
    vis.add_geometry(coord)
    while True:
        pts, colors = bot.camera.get_current_pcd(in_cam=False)
        pts, colors = filter_points(pts, colors, z_lowest=args.floor_height)
        pcd.clear()
        # note that open3d.Vector3dVector is slow
        pcd.points = open3d.Vector3dVector(pts)
        pcd.colors = open3d.Vector3dVector(colors / 255.0)
        vis.update_geometry()
        vis.poll_events()
        vis.update_renderer()
        time.sleep(0.1)
Example #5
0
def main():
    bot = Robot("kinect2")
    vis = open3d.Visualizer()
    vis.create_window("3D Map")
    pcd = open3d.PointCloud()
    coord = open3d.create_mesh_coordinate_frame(1, [0, 0, 0])
    vis.add_geometry(pcd)
    vis.add_geometry(coord)
    # We update the viewer every a few seconds
    update_time = 4
    while True:
        start_time = time.time()
        pts, colors = bot.camera.get_current_pcd()
        pcd.clear()
        # note that open3d.Vector3dVector is slow
        pcd.points = open3d.Vector3dVector(pts)
        pcd.colors = open3d.Vector3dVector(colors / 255.0)
        vis.update_geometry()
        vis.poll_events()
        vis.update_renderer()
        s_t = time.time()
        while time.time() - s_t < update_time:
            vis.poll_events()
            vis.update_renderer()
            time.sleep(0.1)
        end_time = time.time()
        process_time = end_time - start_time
        print("Updating every {0:.2f}s".format(process_time))
Example #6
0
 def __init__(self, pn_model):
     self.vis = pn.Visualizer()
     self.vis.create_window()
     self.camera_representation = pn.LineSet()
     self.camera_trace = pn.LineSet()
     self.vis.add_geometry(pn_model)
     self.vis.add_geometry(self.camera_representation)
     self.vis.run()
     return
    def __init__(self):
        self.k = Kinect(debug=True)
        self.k.start()
        self.k.wait_for_init()

        self.pcd = open3d.PointCloud()

        self.vis = open3d.Visualizer()
        self.vis.create_window()
Example #8
0
def draw_geometries_with_back_face(geometries):
    visualizer = o3d.Visualizer()
    visualizer.create_window()
    render_option = visualizer.get_render_option()
    render_option.mesh_show_back_face = True
    for geometry in geometries:
        visualizer.add_geometry(geometry)
    visualizer.run()
    visualizer.destroy_window()
Example #9
0
 def custom_draw_geometry_load_option(geometry_list):
     vis = open3d.Visualizer()
     vis.create_window()
     for geometry in geometry_list:
         vis.add_geometry(geometry)
     ctr = vis.get_view_control()
     ctr.rotate(0.0, 3141.0, 0)
     vis.run()
     vis.destroy_window()
Example #10
0
def draw_geometries_dark_background(geometries):
    vis = open3d.Visualizer()
    vis.create_window()
    opt = vis.get_render_option()
    opt.background_color = np.asarray([0, 0, 0])
    for geometry in geometries:
        vis.add_geometry(geometry)
    vis.run()
    vis.destroy_window()
Example #11
0
def train_one_epoch():
    """ ops: dict mapping from string to tf ops """
    is_training = True

    # Shuffle train samples
    train_idxs = np.arange(0, len(TRAIN_DATASET))
    np.random.shuffle(train_idxs)
    num_batches = len(TRAIN_DATASET) // BATCH_SIZE

    from utils.open3d_util import np_to_open3d_pc
    import open3d
    vis = open3d.Visualizer()
    vis.create_window()

    pc1_ = open3d.geometry.PointCloud()
    pc2_ = open3d.geometry.PointCloud()
    b = False
    o = vis.get_render_option()
    o.point_show_normal = True
    for batch_idx in range(num_batches):
        start_idx = batch_idx * BATCH_SIZE
        end_idx = (batch_idx + 1) * BATCH_SIZE
        batch_data, batch_label, batch_mask, batch_normals = get_batch(
            TRAIN_DATASET, train_idxs, start_idx, end_idx)

        for i in range(BATCH_SIZE):
            pc1 = batch_data[i, :NUM_POINT, :]
            pc2 = batch_data[i, NUM_POINT:, :]

            pc1_.normals = open3d.Vector3dVector(batch_normals[i, ...])
            pc1_.points = open3d.Vector3dVector(batch_data[i, :NUM_POINT, :3])
            pc1_.colors = open3d.Vector3dVector(batch_data[i, :NUM_POINT, 3:])

            #np.asarray(pc1_.points)[...] += np.asarray(pc1_.normals) + 0.001

            pc2_.points = open3d.Vector3dVector(batch_data[i, NUM_POINT:, :3])
            pc2_.colors = open3d.Vector3dVector(batch_data[i, NUM_POINT:, 3:])

            pc1_.normals = open3d.Vector3dVector([])
            pc2_.normals = open3d.Vector3dVector([])

            if not b:
                vis.add_geometry(pc1_)
                vis.add_geometry(pc2_)
                b = True

            pc1_.paint_uniform_color([1, 0.706, 0])
            pc2_.paint_uniform_color([0.706, 0, 1])
            #open3d.draw_geometries([pc1, pc2])
            vis.update_geometry()
            vis.update_renderer()
            vis.poll_events()
            vis.run()
            input()

    vis.destroy_window()
Example #12
0
def view_multi(joints, axes, amounts):
    vis = o3d.Visualizer()
    vis.create_window()
    vis.add_geometry(get_smpl(joints, axes, amounts))

    lbl = 'Joints {} {} {} dark min red max'.format(joints, axes, amounts)
    vis.add_geometry(text_3d(lbl, (0, 1, 0), font_size=200, density=0.2))

    vis.run()
    vis.destroy_window()
Example #13
0
	def __init__(self):
		self.graph = open3d.PoseGraph()

		self.keyframes = []
		self.last_frame_transformation = numpy.identity(4)

		self.keyframe_angle_thresh_deg = 15.0
		self.keyframe_trans_thresh_m = 1.0

		self.vis = open3d.Visualizer()
		self.vis.create_window()
 def __init__(self, save=False, keep_window=True):
     #Create Visualizer Window etc
     self._vis = o3.Visualizer()
     self._vis.create_window()
     opt = self._vis.get_render_option()
     opt.background_color = np.asarray([0.0, 0.0167, 0.1186])
     opt.point_size = 1.5
     self._save = save
     self._keep_window = keep_window
     self._cnt = 0
     self._currpc = o3.geometry.PointCloud()
Example #15
0
 def __init__(self):
     self.model = open3d.PointCloud()
     self.vis = open3d.Visualizer()
     self.vis.create_window(window_name='Laser 3D Pointcloud',
                            width=800L,
                            height=600L,
                            left=50L,
                            right=50L)
     self.ctr = self.vis.get_view_control()
     self.ctr.rotate(10, 0)
     self.ctr.translate(-1, -1, 1)
Example #16
0
 def __enter__(self):
     self.steps = 0
     if self.visualize:
         if self.viz_mode == 'o3d':
             self.vis_o3d = o3d.Visualizer()
             self.vis_o3d.create_window()
             self.body_o3d = o3d.TriangleMesh()
             self.scan = o3d.PointCloud()
         else:
             self.mv = MeshViewer(body_color=self.body_color)
     return self
Example #17
0
 def render_pointcloud(pcd):
     vis = open3d.Visualizer()
     vis.create_window()
     vis.add_geometry(pcd)
     ctr = vis.get_view_control()
     ctr.rotate(202.0, 202.0)
     vis.update_geometry()
     vis.poll_events()
     vis.update_renderer()
     image = np.asarray(vis.capture_screen_float_buffer(False))
     return image
Example #18
0
def visualise_rgbd_cloud(key_list, resolution_height, resolution_width,
                         device_manager, coordinate_dimentions,
                         transformation_devices):
    # enable visualiser
    align = rs.align(rs.stream.depth)
    vis = o3d.Visualizer()
    vis.create_window('PCD', width=1280, height=720)
    pointcloud = o3d.PointCloud()
    geom_added = False
    voxel_size = 0.005

    while True:
        cloud_pcd = o3d.PointCloud()
        for (serial, device) in device_manager._enabled_devices.items():
            frames = device.pipeline.wait_for_frames()
            frames = align.process(frames)
            profile = frames.get_profile()
            depth_frame = frames.get_depth_frame()
            color_frame = frames.get_color_frame()
            if not depth_frame or not color_frame:
                continue

            # Convert images to numpy arrays
            depth_image = np.asanyarray(depth_frame.get_data())
            color_image = np.asanyarray(color_frame.get_data())

            img_depth = o3d.Image(depth_image)
            img_color = o3d.Image(color_image)
            rgbd = o3d.create_rgbd_image_from_color_and_depth(
                img_color, img_depth, convert_rgb_to_intensity=False)

            intrinsics = profile.as_video_stream_profile().get_intrinsics()
            pinhole_camera_intrinsic = o3d.PinholeCameraIntrinsic(
                intrinsics.width, intrinsics.height, intrinsics.fx,
                intrinsics.fy, intrinsics.ppx, intrinsics.ppy)
            pcd = o3d.create_point_cloud_from_rgbd_image(
                rgbd, pinhole_camera_intrinsic)

            pcd.transform(transformation_devices[serial].pose_mat)
            pointcloud.points = pcd.points
            pointcloud.colors = pcd.colors

            cloud_pcd = cloud_pcd + pointcloud

        #pcd = o3d.geometry.voxel_down_sample(cloud_pcd,
        # voxel_size=voxel_size)
        while True:
            if geom_added == False:
                vis.add_geometry(cloud_pcd)
                geom_added = True

            vis.update_geometry()
            vis.poll_events()
            vis.update_renderer()
Example #19
0
def custom_draw_geometry(pcd):
  """Used for black background"""
  # The following code achieves the same effect as:
  # draw_geometries([pcd])
  vis = open3d.Visualizer()
  vis.create_window()
  opt = vis.get_render_option()
  opt.background_color = np.asarray([0, 0, 0])
  vis.add_geometry(pcd)
  vis.run()
  vis.destroy_window()
Example #20
0
 def showTrajectory(self, windows):
     self.trajectoryVis = o3d.Visualizer()
     self.trajectoryVis.create_window(window_name=windows["windowsName"],
                                      width=windows["width"],
                                      height=windows["height"],
                                      left=windows["left"],
                                      top=windows["top"],
                                      visible=True)
     self.trajectoryVis.get_render_option().point_size = 5
     axis_pcd = o3d.geometry.create_mesh_coordinate_frame(size=0.5,
                                                          origin=[0, 0, 0])
     self.trajectoryVis.add_geometry(axis_pcd)
Example #21
0
def show_traj(windows):
    pcl = open3d.io.read_point_cloud("../data/testDate/a.ply")
    vis = open3d.Visualizer()
    vis.create_window(window_name=windows["windowsName"], width=windows["width"], height=windows["height"], left=windows["left"], top=windows["top"], visible=True)
    vis.add_geometry(pcl)
    param = vis.get_view_control().convert_to_pinhole_camera_parameters()
    open3d.write_pinhole_camera_parameters("../config/externalCamera.json",param)

    while True:
        vis.update_geometry()
        vis.poll_events()
        vis.update_renderer()
        cv2.waitKey(100)
 def intialize_visualizer(self):
     '''
     Function to add geometry (cannot destroy)
     '''
     self.vis = o3.Visualizer()
     self.vis.create_window()
     self.vis.get_render_option().load_from_json(
         "static_data/renderoption.json")
     self.vis.add_geometry(self.base)
     self.trajectory = o3.read_pinhole_camera_trajectory(
         "static_data/pinholeCameraTrajectory3.json")
     self.custom_view()
     self.vis.run()
Example #23
0
def visualize(pointcloud):

    d = pointcloud[:, :3]
    c = pointcloud[:, 3:]
    pcd = open3d.PointCloud()
    pcd.points = open3d.Vector3dVector(d)
    pcd.colors = open3d.Vector3dVector(c)

    vis = open3d.Visualizer()
    vis.create_window()

    vis.add_geometry(pcd)
    vis.run()
    vis.destroy_window()
Example #24
0
def save_depth_maps(mesh, intrinsic, extrinsics, filenames):
  glb = save_depth_maps
  glb.index = -1

  # intrinsics assumed by the renderer - corrected later
  cx = intrinsic.width/2.0-0.5
  cy = intrinsic.height/2.0-0.5
  f = max(intrinsic.get_focal_length())
  glb.intrinsic = open3d.PinholeCameraIntrinsic(intrinsic.width, intrinsic.height,
    f, f, cx, cy)
  glb.extrinsics = extrinsics
  glb.filenames = filenames
  glb.vis = open3d.Visualizer()

  # affine matrix for correction
  offset_x = intrinsic.get_principal_point()[0] - \
             intrinsic.get_focal_length()[0]/f*cx
  offset_y = intrinsic.get_principal_point()[1] - \
             intrinsic.get_focal_length()[1]/f*cy
  glb.affine_M = np.asarray([
    [intrinsic.get_focal_length()[0]/f, 0, offset_x],
    [0, intrinsic.get_focal_length()[1]/f, offset_y]],
    dtype=np.float32)

  def callback(vis):
    ctr = vis.get_view_control()
    glb = save_depth_maps
    if glb.index >= 0:
      depth = np.asarray(vis.capture_depth_float_buffer(False), dtype=np.float32)
      # correct the depth map (useful if your camera has non-ideal intrinsics)
      depth = cv2.warpAffine(depth, glb.affine_M,
        (depth.shape[1], depth.shape[0]), cv2.WARP_INVERSE_MAP,
        cv2.BORDER_CONSTANT, 0)
      cv2.imwrite(glb.filenames[glb.index], np.uint16(np.asarray(depth) * 1000))

    glb.index = glb.index + 1
    if glb.index < len(glb.extrinsics):
      ctr.convert_from_pinhole_camera_parameters(glb.intrinsic,
        glb.extrinsics[glb.index])
    else:
      glb.vis.register_animation_callback(None)
    return False

  vis = glb.vis
  vis.create_window(width=intrinsic.width, height=intrinsic.height)
  vis.add_geometry(mesh)
  vis.register_animation_callback(callback)
  vis.run()
  vis.destroy_window()
 def __init__(self, source, target, save=False, keep_window=True):
     self._vis = o3.Visualizer()
     self._vis.create_window()
     self._source = source
     self._target = target
     self._result = copy.deepcopy(self._source)
     self._save = save
     self._keep_window = keep_window
     self._source.paint_uniform_color([1, 0, 0])
     self._target.paint_uniform_color([0, 1, 0])
     self._result.paint_uniform_color([0, 0, 1])
     self._vis.add_geometry(self._source)
     self._vis.add_geometry(self._target)
     self._vis.add_geometry(self._result)
     self._cnt = 0
def video(img_list, depth_list):
    pcd = o3d.PointCloud()
    vis = o3d.Visualizer()
    vis.create_window()
    opt = vis.get_render_option()
    opt.background_color = np.asarray([0.1, 0.1, 0.1])
    vis.add_geometry(pcd)
    # render_option = vis.get_render_option()
    # render_option.point_size = 0.1

    to_reset_view_point = True

    Cam_coords = []
    Rgb = []

    for i in tqdm(range(len(img_list))):
        # load image, depth
        rgb = load_image(img_list[i])
        depth = load_depth_png(depth_list[i])
        # Get intrinsic parameters from field of view fov
        height, width, _ = rgb.shape
        K = intrinsic_from_fov(height, width, 90)  # +- 45 degrees
        K_inv = np.linalg.inv(K)
        # Get pixel coordinates
        pixel_coords = pixel_coord_np(width, height)  # [3, npoints]
        # Apply back-projection: K_inv @ pixels * depth
        cam_coords = K_inv[:3, :3] @ pixel_coords * depth.flatten()
        rgb = rgb.reshape((height * width, 3)).transpose()
        # Limit points to 150m in the z-direction for visualisation
        rgb = rgb[:, np.where(cam_coords[2] <= 150)[0]]
        cam_coords = cam_coords[:, np.where(cam_coords[2] <= 150)[0]]
        Cam_coords.append(cam_coords.T[:, :3])
        Rgb.append(rgb.T.astype('float64') / 255.0)

    while True:
        for i in range(len(img_list)):
            pcd.points = o3d.Vector3dVector(Cam_coords[i])
            pcd.transform([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0],
                           [0, 0, 0, 1]])
            pcd.colors = o3d.Vector3dVector(Rgb[i])
            vis.update_geometry()
            if to_reset_view_point:
                vis.reset_view_point(True)
                to_reset_view_point = False
            vis.poll_events()
            vis.update_renderer()
            time.sleep(0.1)
    vis.destroy_window()
Example #27
0
    def __init__(self):
        self.k = Kinect(debug=True)
        self.k.start()
        self.k.wait_for_init()

        self.is_running = True

        self.pcd1 = open3d.PointCloud()
        self.pcd2 = open3d.PointCloud()

        self.vis = open3d.Visualizer()
        #self.vis = open3d.VisualizerWithKeyCallback()
        #self.vis.register_key_callback(ord('k'), self.callback_test)
        self.vis.create_window()
        self.vis.add_geometry(self.pcd1)
        self.vis.add_geometry(self.pcd2)
Example #28
0
    def decorated(*args, **kwargs):
        vis = open3d.Visualizer()
        vis.create_window(window_name='Human',
                          width=570,
                          height=700,
                          left=720,
                          top=180,
                          visible=True)

        pygame.init()
        setting = Setting()
        screen = pygame.display.set_mode(setting.win_size)
        pygame.display.set_caption('roll')

        mesh = [
            open3d.TriangleMesh(),
            open3d.TriangleMesh(),
            open3d.TriangleMesh()
        ]
        attr = Attribute()

        line_group, cir_group, text_group = [], {}, list()
        con_rect_cir(screen, setting, line_group, cir_group)
        con_text(setting, line_group, text_group)
        im = Import(screen, setting)
        ex = Export(screen, setting, im)

        HOLD_ON = pygame.USEREVENT + 1  #自定义事件
        pygame.time.set_timer(HOLD_ON, 60)

        model = Model(30, 32, 42, 54, 66, 78, 90, 100)
        model.load_state_dict(torch.load('human_net.pkl'))
        while True:
            check_events(screen, setting, cir_group, im, ex, HOLD_ON, attr,
                         model, mesh, vis)
            update_screen(screen, setting, line_group, cir_group, text_group,
                          im, ex)
            if setting.suc_imp == 1:
                obj_to_mesh(''.join(im.s), mesh)
                vis.add_geometry(mesh[0])
                mesh[0].compute_vertex_normals()
                ctr = vis.get_view_control()
                ctr.rotate(0.0, -500.0)
                attr_reflict_cir(setting, cir_group, attr)
                setting.suc_imp = 2
            vis.update_geometry()
            vis.poll_events()
Example #29
0
def view_fit(joint, translation=(0, 0, 0)):
    translation = np.array(translation)
    vis = o3d.Visualizer()
    vis.create_window()
    vis.add_geometry(get_smpl([joint], [0], [0.5], translation=translation))

    for i in range(6):
        trans = translation + (int(i / 2) * 1.5 + 1, 0, 0)
        vis.add_geometry(get_smpl([joint], [i / 2], [i % 2],
                                  translation=trans))

    lbl = 'Joint {} dark min red max'.format(joint)
    vis.add_geometry(
        text_3d(lbl, translation + (0, 1, 0), font_size=200, density=0.2))

    vis.run()
    vis.destroy_window()
Example #30
0
    def __init__(self, camera_conf):
        self.camera_conf = camera_conf
        self.flip_transform = [[1, 0, 0, 0],
                               [0, -1, 0, 0],
                               [0, 0, -1, 0],
                               [0, 0, 0, 1]]
        # Create Open3D Visualizer
        self.vis = open3d.Visualizer()
        self.vis.create_window('Open3D_1', width=self.camera_conf.depth_width, height=self.camera_conf.depth_height,
                               left=10, top=10)
        self.vis.get_render_option().point_size = 3

        # 定义图像点云
        self.image_pcd = open3d.PointCloud()
        # 定义原点
        self.origin_point = open3d.geometry.create_mesh_coordinate_frame(size=0.5, origin=[0, 0, 0])
        # 定义关节点点云连接线:24关节点连接线
        self.bone_line_pcd = open3d_tools.create_line_set_bones(np.zeros((24, 3), dtype=np.float32),
                                                                joint_line=self.camera_conf.joint_lines)