写点什么

python 利用 open3d 可视化 npy 文件

作者:Studying_swz
  • 2022-11-27
    天津
  • 本文字数:854 字

    阅读完需:约 3 分钟

python利用open3d可视化npy文件

<hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1">


1.可视化代码

#coding=utf-8import open3d as o3dimport numpy as npnp.set_printoptions(suppress=True) # 取消默认科学计数法,open3d无法读取科学计数法表示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') # 原npy文件中的数据正好是按x y z r g b进行排列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 可视化。



# 读取点云并可视化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)
复制代码



发布于: 刚刚阅读数: 4
用户头像

Studying_swz

关注

还未添加个人签名 2020-12-23 加入

还未添加个人简介

评论

发布
暂无评论
python利用open3d可视化npy文件_Python_Studying_swz_InfoQ写作社区