initial commit
This commit is contained in:
63
vis/view.py
Normal file
63
vis/view.py
Normal file
@ -0,0 +1,63 @@
|
||||
import open3d as o3d
|
||||
import numpy as np
|
||||
|
||||
|
||||
def mini_color_table(index, norm=True):
|
||||
colors = [
|
||||
[0.5000, 0.5400, 0.5300], [0.8900, 0.1500, 0.2100], [0.6400, 0.5800, 0.5000],
|
||||
[1.0000, 0.3800, 0.0100], [1.0000, 0.6600, 0.1400], [0.4980, 1.0000, 0.0000],
|
||||
[0.4980, 1.0000, 0.8314], [0.9412, 0.9725, 1.0000], [0.5412, 0.1686, 0.8863],
|
||||
[0.5765, 0.4392, 0.8588], [0.3600, 0.1400, 0.4300], [0.5600, 0.3700, 0.6000],
|
||||
]
|
||||
|
||||
assert index >= 0 and index < len(colors)
|
||||
color = colors[index]
|
||||
|
||||
if not norm:
|
||||
color[0] *= 255
|
||||
color[1] *= 255
|
||||
color[2] *= 255
|
||||
|
||||
return color
|
||||
|
||||
|
||||
def view_points(points, colors=None):
|
||||
'''
|
||||
points: np.ndarray with shape (n, 3)
|
||||
colors: [r, g, b] or np.array with shape (n, 3)
|
||||
'''
|
||||
cloud = o3d.PointCloud()
|
||||
cloud.points = o3d.Vector3dVector(points)
|
||||
|
||||
if colors is not None:
|
||||
if isinstance(colors, np.ndarray):
|
||||
cloud.colors = o3d.Vector3dVector(colors)
|
||||
else: cloud.paint_uniform_color(colors)
|
||||
|
||||
o3d.draw_geometries([cloud])
|
||||
|
||||
|
||||
def label2color(labels):
|
||||
'''
|
||||
labels: np.ndarray with shape (n, )
|
||||
colors(return): np.ndarray with shape (n, 3)
|
||||
'''
|
||||
num = labels.shape[0]
|
||||
colors = np.zeros((num, 3))
|
||||
|
||||
minl, maxl = np.min(labels), np.max(labels)
|
||||
for l in range(minl, maxl + 1):
|
||||
colors[labels==l, :] = mini_color_table(l)
|
||||
|
||||
return colors
|
||||
|
||||
|
||||
def view_points_labels(points, labels):
|
||||
'''
|
||||
Assign points with colors by labels and view colored points.
|
||||
points: np.ndarray with shape (n, 3)
|
||||
labels: np.ndarray with shape (n, 1), dtype=np.int32
|
||||
'''
|
||||
assert points.shape[0] == labels.shape[0]
|
||||
colors = label2color(labels)
|
||||
view_points(points, colors)
|
Reference in New Issue
Block a user