点云txt格式转pcd(Open3D支持格式)

Open3D格式支持

一般获得点云的基础格式是las和txt格式,但是在抽取数据后使用python包open3d进行点云的更多处理时,一般支持的是pcd格式,我们先看一下pcd格式的文本内容:

PCD版本

可以看到,pcd格式的文件虽然和TXT格式的一样都是是记事本文件,但是它的抬头有pcd的版本和格式的一些声明。这样一来我们似乎就只需要将抬头和txt的数据接到一起放到另一个记事本里面就可以制作pcd文件了。

# .PCD v0.7 - Point Cloud Data file format :格式声明
VERSION 0.7:版本号,一般只用0.7
FIELDS x y z
XYZ三维坐标,添加rgb可以指示颜色
SIZE 4 4 4每个维度的数据占用字节大小
TYPE F F FF表示每个维度都是浮点型数据
COUNT 1 1 1:一个维度只有一个数据
WIDTH 7270:数据宽度(7270)
HEIGHT 1:数据高度(1)
VIEWPOINT 0 0 0 1 0 0 0:数据点云获取视点
POINTS 7270:点数(7270 = 7270 *1)
DATA ascii:数据存储类型

但事实上在输出的绝大多数的txt点云数据陡不是三列的,很多都是包含x,y,z,r,g,b,scale七列数据。

七列数据中的后四列在open3d中无法打开。怎么把任意列数的txt文件转为三列的pcd格式呢?

 

转换逻辑

1.抽取地址并读取txt文件,查询文件的列数。

open(input("Extract_path_txt:"), 'r')

2.readlines按行读取并将前三列的坐标添加到新的列表。

#将单行文本转化为数值矩阵
da_float = [math.fabs(float(i)) for i in lines.split(' ')]
x.append(da_float[0])
y.append(da_float[1])
z.append(da_float[2])

4.创建文本文件,保存地址并添加(.pcd)后缀

savefilename = input("Filename_pcd:") + ".pcd"
savefilename = input("Save_path_pcd:") + savefilename
file_pcd = open(savefilename, 'w')
file_pcd.close()#注意,此处必须要关闭

3.打开写入pcd版本声明和前三列的坐标数据。

        pcd抬头:注意WIDTH,POINTS,均指示txt文件的点云的行数,即点云个数。

        写完抬头后按行继续写前三列的数据

#每行俩空格一次换行
file_w.writelines(str(x[i]) + " " + str(y[i]) + " " + str(z[i]) + "\n")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K.K. Salamander

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值