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',