stl、xyz点云文件转为las格式文件,出现AttributeError: module ‘laspy.header‘ has no attribute ‘Header‘

一开始用手持式扫描仪扫出来的是slt和ddt文件,都是网格数据,这里说一下如何将stl文件转为ply、las、pcd、txt文件:
方法都比较简单,可以用软件可以不用软件,先说用软件的:整体过程如下(假如你是stl文件):
1、Polyworks中转为txt文件,然后在CloudCompare中转为las文件(也可以用python代码转为las文件)。
2、Polyworks中转为ply文件,然后用python代码将ply文件转为pcd文件。

首先来看第一条分支:
1、使用Polyworks,选择“文件”-“输入”-“三角化模型”,就可以在列表中看到打开的文件:
在这里插入图片描述
stl和ply文件都是三角化的网格文件,不是点云数据。然后再stl文件右键,选择下图所示:
在这里插入图片描述
就可以在inspector里面查看网格模型数据了。第三步就是直接输出为点云了:选择“文件(或右键stl文件)”-“输出-“作为点云···””
在这里插入图片描述
这里看到只能选txt文件,输入文件名后点击保存,然后就可以了。接下来先用软件CloudCompare实现las文件的转换:

打开CloudCompare,然后“File”-“Open”,打开txt文件,会出现下面的界面:
在这里插入图片描述
选择“Apply”即可导入。然后先单击打开的文件,然后选择“File”-“Save”(注意不单击打开的txt,save无法选中),然后就可以看到las和pcd格式文件都能导出。
在这里插入图片描述
随便选一种就行了,这个就结束了。

如果对代码比较熟悉,也可以用python实现txt到las文件的转换,代码如下:

import laspy
import numpy as np

# 读取txt文件
data = np.loadtxt('plyyyy.txt', delimiter=',', usecols=(0, 1, 2))
x = data[:, 0]
y = data[:, 1]
z = data[:, 2]
outfile = laspy.create(file_version="1.2", point_format=3)
# 写入点云数据
outfile.x = x
outfile.y = y
outfile.z = z
outfile.write("new_las.las")

上述代码直接运行就行了,但是注意laspy的版本要大于2.0,否则会报标题的错误“AttributeError: module ‘laspy.header’ has no attribute ‘Header’”。

2、Polyworks中转为ply文件,然后用python代码将ply文件转为pcd文件。
先用软件Polyworks输入slt文件,其余过程跟上面的一样,但是后续过程需要将输出改为“输出为三角模型”,然后选择ply就可以了,至于ply转为pcd就太容易了。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值