资讯专栏INFORMATION COLUMN

python将指定点云文件(asc)转换为PCD格式

cyrils / 2091人阅读

摘要:起因由于自己大部分的点云文件都是格式的,但最近用做点云方面的研究,从文件到文件手动转化太麻烦,而且效率较低,故此写一个不太成熟的脚本实现从文件到格式文件的转换。

起因

由于自己大部分的点云文件都是.asc格式的,但最近用pcl做点云方面的研究,从asc文件到pcd文件手动转化太麻烦,而且效率较低,故此写一个不太成熟的python脚本实现从asc文件到pcd格式文件的转换。
ps此脚本只适用于ASCII编码的文件,并且只适用于散乱点云

着手写作

分析pcd文件的格式可知,从asc到pcd转换最根本要求就是其文件开头符合pcd格式要求,其中最主要的问题是的是如何动态设置WIDTHPOINTS的值,对于散乱点云,这两个值都可以表示点数.点数的获得可用asc文件的行数表示.
代码如下:

#coding:utf-8
import time
from sys import argv
script ,filename = argv
print ("the input file name is:%r." %filename)

start = time.time()
print ("open the file...")
file = open(filename,"r+")
count = 0
#统计源文件的点数
for line in file:
    count=count+1
print ("size is %d" %count)
file.close()

#output = open("out.pcd","w+")
f_prefix = filename.split(".")[0]
output_filename = "{prefix}.pcd".format(prefix=f_prefix)
output = open(output_filename,"w+")

list = ["# .PCD v.5 - Point Cloud Data file format
","VERSION .5
","FIELDS x y z
","SIZE 4 4 4
","TYPE F F F
","COUNT 1 1 1
"]

output.writelines(list)
output.write("WIDTH ") #注意后边有空格
output.write(str(count))
output.write("
HEIGHT")
output.write(str(1))  #强制类型转换,文件的输入只能是str格式
output.write("
POINTS ")
output.write(str(count))
output.write("
DATA ascii
")
file1 = open(filename,"r")
all = file1.read()
output.write(all)
output.close()
file1.close()

end = time.time()
print ("run time is: ", end-start)
实例

以20万左右的点云为例,该脚本运行时间大约在0.14s左右,基本可以满足自己的需求

运行以上脚本,便可自动将example.asc转化为example.pcd

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45525.html

相关文章

  • python指定点云文件asc转换PCD格式

    摘要:起因由于自己大部分的点云文件都是格式的,但最近用做点云方面的研究,从文件到文件手动转化太麻烦,而且效率较低,故此写一个不太成熟的脚本实现从文件到格式文件的转换。 起因 由于自己大部分的点云文件都是.asc格式的,但最近用pcl做点云方面的研究,从asc文件到pcd文件手动转化太麻烦,而且效率较低,故此写一个不太成熟的python脚本实现从asc文件到pcd格式文件的转换。ps:此脚本只...

    daryl 评论0 收藏0
  • Linux下 PCL源码安装

    摘要:既然选择了,那末接下来便是理所当然的事情获取源码包。建议此源码安装不针对任何系统,,等都适用。若打算源码安装,在安装之前最好先更新一下系统,这样基本能保证所安装的包为最新包。 不得不知的PCL 所谓PCL(Point Cloud Library)其实就是一个开源的c++代码库,它实现了大量点云相关的通用算法和高效的数据管理结构,不仅涉及逆向工程领域,其还在模式识别,机器人视觉,计算机图...

    iamyoung001 评论0 收藏0
  • pcl可视化的那些事

    摘要:在点云数据预处理中,要想知道点云的形状需要可视化要想了解精简去噪简化压缩的结果需要可视化配准中,对应点对的显示对应点对的去除结果配准变化的过程需要可视化下可直接在命令行输入或可直接显示中的点云文件。 可视化:一目了然 如题所示,可视化的重要性不必多说。在点云数据预处理中,要想知道点云的形状需要可视化; 要想了解精简/去噪/简化/压缩 的结果需要可视化; 配准中,对应点对的显示/对应点对...

    Rocture 评论0 收藏0
  • pcl常用小知识

    摘要:文件不仅可以存储点数据,而且可以存储网格数据用打开一个文件,观察表头,如果表头的值为则表示该文件为点云文件,如果的值为某一正整数,则表示该文件为网格文件,且包含个网格所以利用读取文件,不能一味用来读取。 时间计算 pcl中计算程序运行时间有很多函数,其中利用控制台的时间计算是:首先必须包含头文件 #include ,其次,pcl::console::TicToc time; time....

    FrozenMap 评论0 收藏0
  • k-means 之 C++ 的实现

    摘要:均值是怎么实现的就像周王室分封诸侯,均值聚类也需要被告知到底要分多少诸侯。上代码聚类群组索引号将该点和该点群组的索引存入聚类中保存上一次迭代的中心点是否存在中心点移动将聚类的点分别存到各自的文件中实例检测 物以类聚,人以群分 所谓k-means,即k均值聚类.聚类过程好比中国历史上的春秋五霸,战国七雄,它们同属与中国大地,同时被周王室分封。分封的过程就相当于K类的指定过程,每一个诸侯国...

    dayday_up 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<