Open3d: Pass intensity to PCD / PLY from numpy array

Created on 6 Jul 2018  路  5Comments  路  Source: intel-isl/Open3D

I have intensity values with LIDAR information and I'd like to pass it into the PCD variable. I'm looking at the following code example, but I'm not sure how to expand this to include intensity. Previously I wrote out csv's to .xyzrgb files to pass intensity, but I'm benefiting from the binary vs ascii format.

# Pass xyz to Open3D.PointCloud and visualize
pcd = PointCloud()
pcd.points = Vector3dVector(xyz)
write_point_cloud("../../TestData/sync.ply", pcd)
feature request low priority question

Most helpful comment

Hi @syncle, any updates on the data structure? This is a very useful feature for lidar based pointclouds. Any fields beyond xyzrgb are silently ignored when importing ply files. Our team is using o3d more and more but this is a particular pain point when moving away from pcl. Thanks!

All 5 comments

How about trying this?

intensity = np.zeros((np.size(mesh_x),3))
intensity[:,0] = np.reshape(intensity_from_velodyne,-1)
intensity[:,1] = np.reshape(intensity_from_velodyne,-1)
intensity[:,2] = np.reshape(intensity_from_velodyne,-1)
pcd.colors = Vector3dVector(intensity)

Thanks! I know you're focused on RGBD images, but it might be nice to support a 1d array for colors. There's a decent penalty for storing 6 columns of data, instead of 4.

That's true. We are planning potential upgrade on the data structure. I will put it to my list.

Hi @syncle, any updates on the data structure? This is a very useful feature for lidar based pointclouds. Any fields beyond xyzrgb are silently ignored when importing ply files. Our team is using o3d more and more but this is a particular pain point when moving away from pcl. Thanks!

@yxlao do you think we could take care of this?

Was this page helpful?
0 / 5 - 0 ratings