一开始用手持式扫描仪扫出来的是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就太容易了。