예제 #1
0
 def visualize_one_sample(self, old_points, expand_points, gt_box_3d,
                          prop_box_3d, box2d_center_rect):
     import mayavi.mlab as mlab
     from mayavi_utils import draw_lidar, draw_lidar_simple, draw_gt_boxes3d
     # fig = draw_lidar(pc_in_prop_box, pts_color=(1,1,1))
     fig = draw_lidar(expand_points[:, :3], pts_color=(1, 1, 1))
     fig = draw_lidar(old_points[:, :3], pts_color=(0, 1, 0), fig=fig)
     fig = draw_gt_boxes3d([gt_box_3d], fig, color=(1, 0, 0))
     fig = draw_gt_boxes3d([prop_box_3d],
                           fig,
                           draw_text=False,
                           color=(1, 1, 1))
     # roi_feature_map
     # roi_features_size = 7 * 7 * 32
     # img_roi_features = prop.roi_features[0:roi_features_size].reshape((7, 7, -1))
     # bev_roi_features = prop.roi_features[roi_features_size:].reshape((7, 7, -1))
     # img_roi_features = np.amax(img_roi_features, axis=-1)
     # bev_roi_features = np.amax(bev_roi_features, axis=-1)
     # fig1 = mlab.figure(figure=None, bgcolor=(0,0,0),
     #     fgcolor=None, engine=None, size=(500, 500))
     # fig2 = mlab.figure(figure=None, bgcolor=(0,0,0),
     #     fgcolor=None, engine=None, size=(500, 500))
     # mlab.imshow(img_roi_features, colormap='gist_earth', name='img_roi_features', figure=fig1)
     # mlab.imshow(bev_roi_features, colormap='gist_earth', name='bev_roi_features', figure=fig2)
     mlab.plot3d([0, box2d_center_rect[0][0]], [0, box2d_center_rect[0][1]],
                 [0, box2d_center_rect[0][2]],
                 color=(1, 1, 1),
                 tube_radius=None,
                 figure=fig)
     raw_input()
예제 #2
0
 def visualize_proposals(self, pc_rect, prop_boxes, neg_boxes, gt_boxes, pc_seg=None):
     import mayavi.mlab as mlab
     from mayavi_utils import draw_lidar, draw_gt_boxes3d
     fig = draw_lidar(pc_rect)
     if pc_seg:
         fig = draw_lidar(pc_rect[pc_seg==1], fig=fig, pts_color=(1, 1, 1))
     fig = draw_gt_boxes3d(prop_boxes, fig, draw_text=False, color=(1, 0, 0))
     fig = draw_gt_boxes3d(neg_boxes, fig, draw_text=False, color=(0, 1, 0))
     fig = draw_gt_boxes3d(gt_boxes, fig, draw_text=False, color=(1, 1, 1))
     raw_input()
예제 #3
0
 def viz_frame(self, pc_rect, mask, gt_boxes):
     import mayavi.mlab as mlab
     from mayavi_utils import draw_lidar, draw_lidar_simple, draw_gt_boxes3d
     fig = draw_lidar(pc_rect)
     fig = draw_lidar(pc_rect[mask == 1], fig=fig, pts_color=(1, 1, 1))
     fig = draw_gt_boxes3d(gt_boxes, fig, draw_text=False, color=(1, 1, 1))
     raw_input()
예제 #4
0
def visualize(dataset,
              frame_id,
              prediction,
              seg_mask=None,
              show_3d=False,
              output_dir=None):
    fig_size = (12.42, 3.75)
    is_video = type(dataset).__name__ == 'kitti_object_video'
    # pred_fig, pred_2d_axes, pred_3d_axes = \
    #     vis_utils.visualization(dataset.image_dir,
    #                             int(frame_id),
    #                             display=False,
    #                             fig_size=fig_size)

    pred_fig, pred_3d_axes = vis_utils.visualize_single_plot(dataset.image_dir,
                                                             int(frame_id),
                                                             is_video,
                                                             flipped=False,
                                                             display=False,
                                                             fig_size=fig_size)
    calib = dataset.get_calibration(frame_id)  # 3 by 4 matrix

    # 2d visualization
    # draw groundtruth
    # labels = dataset.get_label_objects(frame_id)
    # labels = filter(lambda obj: obj.type in type_whitelist and obj.difficulty in difficulties_whitelist, labels)
    # draw_boxes(labels, calib, pred_2d_axes)
    # draw prediction on second image
    pred_corners = draw_boxes(prediction, calib, pred_3d_axes)
    if output_dir:
        filename = os.path.join(output_dir,
                                'result_2d_image/%06d.png' % frame_id)
        plt.savefig(filename)
        plt.close(pred_fig)
    else:
        plt.show()
        raw_input()

    if seg_mask is not None:
        img = dataset.get_image(frame_id)
        img = cv2.resize(img, (1200, 360))
        seg_img = add_mask_to_img(img, seg_mask)
        filename = os.path.join(output_dir,
                                'result_seg_image/%06d.png' % frame_id)
        cv2.imwrite(filename, seg_img)

    if show_3d:
        # 3d visualization
        pc_velo = dataset.get_lidar(frame_id)
        image = dataset.get_image(frame_id)
        img_height, img_width = image.shape[0:2]
        _, _, img_fov_inds = get_lidar_in_image_fov(pc_velo[:, 0:3], calib, 0,
                                                    0, img_width, img_height,
                                                    True)
        pc_velo = pc_velo[img_fov_inds, :]
        boxes3d_velo = []
        mask = np.zeros((len(pc_velo), ))
        for corners in pred_corners:
            pts_velo = calib.project_rect_to_velo(corners)
            boxes3d_velo.append(pts_velo)
            _, obj_mask = extract_pc_in_box3d(pc_velo, pts_velo)
            mask = np.logical_or(mask, obj_mask)
        fig = draw_lidar(pc_velo, pts_color=(1, 1, 1))
        fig = draw_lidar(pc_velo[mask == 1], fig=fig, pts_color=(1, 0, 0))
        fig = draw_gt_boxes3d(boxes3d_velo,
                              fig,
                              draw_text=False,
                              color=(1, 1, 1))
        # raw_input()
        if output_dir:
            filename = os.path.join(output_dir,
                                    'result_3d_image/%06d.png' % frame_id)
            mlab.savefig(filename, figure=fig)