(1)点云库处理学习——点云的格式、PCD文件的打开和显示

1、主要参考

(1)格式说明:

点云库PCL学习——点云的格式、PCD文件的打开和显示

ROS知识:点云文件.pcd格式_无水先生的博客-CSDN博客_pcd文件

(2)点云滤波,对nan的滤波

Python点云数据处理(三)滤波与RANSAC分割 - 知乎

(3)点云各类处理

点云离群点剔除 — open3d python_Coding的叶子的博客-CSDN博客_离群点去除

2、格式说明

2.1直接用notepad++打开pcd文件后如下

 2.2、格式说明

  1. VERSION是指定版本号
  2. FIELDS是指定每一个点所拥有的的维度名字,其它的格式如下
    FIELDS x y z                                # XYZ data
    FIELDS x y z rgb                            # XYZ + colors
  3. SIZE是每个维度占的字节大小,其中(unsigned char/char has 1 byte,unsigned short/short has 2 bytes,unsigned int/int/float has 4 bytesdouble has 8 bytes)
  4. TYPE是每一个维度的类型,其中(I - 表示有符号类型 int8 (char)、int16 (short) 和 int32 (int);U -代表无符号类型 uint8 (unsigned char), uint16 (unsigned short), uint32 (unsigned int);F - 表示浮点类型
  5. COUNT是指 指定每个维度有多少个元素默认情况下,如果 COUNT 不存在,则所有维度的计数都设置为 1。
  6. WIDTH –用点的数量表示点云数据集的宽度。根据是有序点云还是无序点云,WIDTH有两层解释:(我的这个数据应该是有序的

     1)它能确定无序数据集的点云中点的个数(和下面的POINTS一样);

     2)它能确定有序点云数据集的宽度(一行中点的数目)。

  7. HEIGHT –用点的数目表示点云数据集的高度。类似于WIDTH ,HEIGHT也有两层解释:1)它表示有序点云数据集的高度(行的总数);2)对于无序数据集它被设置成1(被用来检查一个数据集是有序还是无序)。
  8. VIEWPOINT是指定数据集中点云的获取视点。VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时也比较有用,例如曲面法线,在判断方向一致性时,需要知道视点的方位,视点信息被指定为平移(txtytz)+四元数(qwqxqyqz)。默认值是:VIEWPOINT 0 0 0 1 0 0 0
  9. POINTS是数据的总点数
  10. DATA是表示数据存储的格式。有ASCII  和 二进制(binary)

       标题最后一行 (DATA) 之后的下一个字节被视为点云数据的一部分,并将被解释为点云数据的一部分。

      

3、点云读取和显示

3.1安装open3d

pip install open3d -i https://pypi.tuna.tsinghua.edu.cn/simple 

3.2 去除Nan后的数据显示

 无效值包括空值和无限值。空值一般用NaN表示。open3d中对应的剔除函数为remove_non_finite_points。当remove_nan为True时,剔除空值。当remove_infinite为True时表示去除无限值。

3.2.1方法一剔除

(1)一开始显示一直有问题,后来看了看是Nan数据引起的,去除以后可以显示

import open3d as o3d
import numpy as np

##--方法(1)去除Nan------------------
path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd"
pcd = o3d.io.read_point_cloud(path)  # path为文件路径
pcd_new = o3d.geometry.PointCloud.remove_non_finite_points(
                        pcd, remove_nan = True, remove_infinite = False)
o3d.visualization.draw_geometries([pcd_new])

 3.2.2方法二剔除

import open3d as o3d
import numpy as np

##--方法(1)去除Nan------------------
# path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd"
# pcd = o3d.io.read_point_cloud(path)  # path为文件路径
# pcd_new = o3d.geometry.PointCloud.remove_non_finite_points(
#                         pcd, remove_nan = True, remove_infinite = False)
# o3d.visualization.draw_geometries([pcd_new])


##--方法(2)去除Nan------------------
path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd"
pcd = o3d.io.read_point_cloud(path)  # path为文件路径
# res = pcd.remove_non_finite_points(True, True)#剔除无效值
pcd = pcd.remove_non_finite_points(True, False)#剔除无效值
o3d.visualization.draw_geometries([pcd])

 3.3 给显示窗口命名和大小设置

(1)测试代码

##--方法(2)去除Nan------------------
path = "D:/RGBD_CAMERA/python_3d_process/1_hezi.pcd"
pcd = o3d.io.read_point_cloud(path)  # path为文件路径
# res = pcd.remove_non_finite_points(True, True)#剔除无效值
pcd = pcd.remove_non_finite_points(True, False)#剔除无效值
o3d.visualization.draw_geometries([pcd],                                    
                                      window_name="窗口名字测试",
                                      point_show_normal=False,
                                      width=800,  # 窗口宽度
                                      height=600)  # 窗口高度

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值