open3d不支持npy后缀的文件,仅支持如下格式的文件。

图片来源:https://mp.weixin.qq.com/s/NomNV6Yan8K2qisiPhQIRw
【解决方法】先用numpy读取这个文件保存为txt格式,在使用open3d读取进行可视化。代码如下:
import open3d as o3d
import numpy as np
np.set_printoptions(suppress=True) # 取消默认科学计数法,open3d无法读取科学计数法表示
data = np.load('point_cloud/scene0000_00_vert.npy')
np.savetxt('point_cloud/scene.txt', data)
# 读取点云并可视化
pcd =o3d.io.read_point_cloud('point_cloud/scene.txt', format='xyzrgb') # 原npy文件中的数据正好是按x y z r g b进行排列
print(pcd)
o3d.visualization.draw_geometries([pcd], width=1200, height=600)
【一些问题】
1、open3d无法读取numpy默认保存科学计数法的问题,代码中已解决。参考链接
2、原数据中rgb值的范围为0-255,而open3d需要调整为0-1。所以需要数组中指定列除以一个数,即将最后3列除以255,解决方法如下
import numpy as np
a = np.array([[1, 2, 3], [2, 4, 8]])
b = np.array([1, 2, 2]) # 每一列要除的数
c = a/b
print(c)
[[1. 1. 1.5]
[2. 2. 4. ]]
3、np读取数据和保存数据的问题。参考链接
659

被折叠的 条评论
为什么被折叠?



