目录
一、背景
近期在做PointNet++的数据集时,通过深度图转点云的方式,点云是没有颜色的。但是局部分割网络的shsapnet数据集格式是xyzrgb+标签,所以需要先给点云附上rgb的颜色,此处数据集我按照z方向高度来附上颜色。
二、代码
import open3d as o3d
import numpy as np
cloud=o3d.io.read_point_cloud('mouse.pcd')
pts = np.asarray(cloud.points)
# 根据高度生成色彩
colors = np.zeros([pts.shape[0], 3])
height_max = np.max(pts[:, 2])
height_min = np.min(pts[:, 2])
delta_c = abs(height_max - height_min) / (255 * 2)
for j in range(pts.shape[0]):
color_n = (pts[j, 2] - height_min) / delta_c
if color_n <= 255:
colors[j, :] = [0, 1 - color_n / 255, 1]
else:
colors[j, :] = [(color_n - 255) / 255, 0, 1]
cloud.colors = o3d.utility.Vector3dVector(colors)
o3d.visualization.draw_geometries([cloud])
</