python利用open3d可视化npy文件
-
pcd点云的存储形式一共有两种,分别是binary和ascll码的形式,其详解见https://blog.csdn.net/qq_37534947/article/details/107187907
-
前期准备:
open3d的安装:
pip install open3d
pip install open3d-python==0.7.0.0 (这个必须有)
1.可视化代码
#coding=utf-8
import open3d as o3d
import numpy as np
np.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)
参考链接:https://blog.csdn.net/zyoung17/article/details/106963253/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~