1.可视化代码
import open3d as o3d
import numpy as np
np.set_printoptions(suppress=True)
data = np.load('./Area_1_conferenceRoom_1.npy')
b = np.array([1 , 1, 1,255, 255, 255])
np.savetxt('./scene.txt', data[:,:6]/b)
pcd =o3d.io.read_point_cloud('./scene.txt', format='xyzrgb')
print(pcd)
o3d.visualization.draw_geometries([pcd], width=1200, height=600)
2.代码分析
-
加载数据 data = np.load('./Area_1_conferenceRoom_1.npy')
这时候的数据大小要分清,一般是n * 6,这里的6维分别指的XYZRGB; 但是我的S3dis数据集是n * 7,最后一位是标签,所以需要把最后一维去掉。 -
维度减少 np.savetxt('./scene.txt', data[:,:6]/b)
-
rgb范围减少 原数据中rgb值的范围为0-255,而open3d需要调整为0-1。所以需要数组中指定列除以一个255,即将最后3列除以255,最后保存为txt文件 b = np.array([1 , 1, 1,255, 255, 255])
np.savetxt('./scene.txt', data[:,:6]/b)
如果不进行减少的话,可能会报错:[Open3D WARNING] [ViewControl] SetViewPoint() failed because window height and width are not set.
3.可视化txt文件
因为npy文件,无法直接可视化,所以需要转换成txt文件,最后再利用open3d可视化。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2ad393db6a7f4bfd92ac5a0b2fd2edc0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGF6eVN0dWR5X3N3eg==,size_20,color_FFFFFF,t_70,g_se,x_16)
pcd =o3d.io.read_point_cloud('point_cloud/scene.txt', format='xyzrgb')
print(pcd)
o3d.visualization.draw_geometries([pcd], width=1200, height=600)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c5d421fa1ff04657854bf7caf4d4161d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGF6eVN0dWR5X3N3eg==,size_20,color_FFFFFF,t_70,g_se,x_16)
参考链接:https://blog.csdn.net/zyoung17/article/details/106963253/
|