Beispiel #1
0
def visualize_boundary(pred_file,
                       mesh_file,
                       output_file,
                       output_file_possi=None):
    if not output_file.endswith('.ply'):
        util.print_error('output file must be a .ply file')
    colors = util.create_color_palette()
    num_colors = len(colors)
    ids, boundary, boundary_possi = util_3d.load_ids_boundary(pred_file)
    with open(mesh_file, 'rb') as f:
        plydata = PlyData.read(f)
        f.seek(0)
        plydata_possi = PlyData.read(f)

        num_verts = plydata['vertex'].count
        if num_verts != len(ids):
            util.print_error('#predicted labels = ' + str(len(ids)) +
                             'vs #mesh vertices = ' + str(num_verts))
        # *_vh_clean_2.ply has colors already
        for i in range(num_verts):
            if ids[i] >= num_colors:
                util.print_error('found predicted label ' + str(ids[i]) +
                                 ' not in nyu40 label set')
            if boundary[i] == 0:
                plydata['vertex']['red'][i] = 255
                plydata['vertex']['green'][i] = 0
                plydata['vertex']['blue'][i] = 0

        num_verts = plydata_possi['vertex'].count
        if num_verts != len(ids):
            util.print_error('#predicted labels = ' + str(len(ids)) +
                             'vs #mesh vertices = ' + str(num_verts))
        # *_vh_clean_2.ply has colors already
        for i in range(num_verts):
            if ids[i] >= num_colors:
                util.print_error('found predicted label ' + str(ids[i]) +
                                 ' not in nyu40 label set')
            plydata_possi['vertex']['red'][i] = int(255 *
                                                    (1 - boundary_possi[i]))
            plydata_possi['vertex']['green'][i] = int(255 *
                                                      (1 - boundary_possi[i]))
            plydata_possi['vertex']['blue'][i] = int(255 *
                                                     (1 - boundary_possi[i]))

    plydata.write(output_file)
    plydata_possi.write(output_file_possi)
def visualize(pred_file, mesh_file, output_file):
    if not output_file.endswith('.ply'):
        util.print_error('output file must be a .ply file')
    colors = util.create_color_palette()
    num_colors = len(colors)
    ids = util_3d.load_ids(pred_file)
    with open(mesh_file, 'rb') as f:
        plydata = PlyData.read(f)
        num_verts = plydata['vertex'].count
        if num_verts != len(ids):
            util.print_error('#predicted labels = ' + str(len(ids)) + 'vs #mesh vertices = ' + str(num_verts))
        # *_vh_clean_2.ply has colors already
        for i in range(num_verts):
            if ids[i] >= num_colors:
                util.print_error('found predicted label ' + str(ids[i]) + ' not in nyu40 label set')
            color = colors[ids[i]]
            plydata['vertex']['red'][i] = color[0]
            plydata['vertex']['green'][i] = color[1]
            plydata['vertex']['blue'][i] = color[2]
    plydata.write(output_file)
import os
import sys
from datetime import datetime
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(BASE_DIR)
sys.path.append(os.path.join(BASE_DIR, 'models'))
sys.path.append(os.path.join(BASE_DIR, 'utils'))
sys.path.append(os.path.join(BASE_DIR, 'scannet'))
import provider
import tf_util
import scannet_dataset_rgb
import time
import util
import pointconv_util

colors = util.create_color_palette()

parser = argparse.ArgumentParser()
parser.add_argument('--gpu',
                    type=int,
                    default=0,
                    help='GPU to use [default: GPU 0]')
parser.add_argument('--model',
                    default='model',
                    help='Model name [default: model]')
parser.add_argument('--log_dir', default='log', help='Log dir [default: log]')
parser.add_argument('--num_point',
                    type=int,
                    default=8192,
                    help='Point Number [default: 8192]')
parser.add_argument('--max_epoch',