python利用open3d可视化npy文件

举报
Studying-swz 发表于 2022/08/10 23:43:59 2022/08/10
【摘要】 文章目录 1.可视化代码2.代码分析3.可视化txt文件 pcd点云的存储形式一共有两种,分别是binary和ascll码的形式,其详解见https://blog.csdn.net/q...


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)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.代码分析

  • 加载数据

    data = np.load('./Area_1_conferenceRoom_1.npy') 
    
        
       
    • 1

    这时候的数据大小要分清,一般是n * 6,这里的6维分别指的XYZRGB;
    但是我的S3dis数据集是n * 7,最后一位是标签,所以需要把最后一维去掉。

  • 维度减少

    np.savetxt('./scene.txt', data[:,:6]/b)
    
        
       
    • 1
  • 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)
    
        
       
    • 1
    • 2

    如果不进行减少的话,可能会报错:[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)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

参考链接:https://blog.csdn.net/zyoung17/article/details/106963253/

文章来源: blog.csdn.net,作者:Studying_swz,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_37534947/article/details/123178985

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。