向PCD文件写入点云数据
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=83
本小节我们学习如何向PCD文件写入点云数据。
代码
首先,在PCL(Point Cloud Learning)中国协助发行的书[1]提供光盘的第4章例2文件夹中,打开名为pcd_write.cpp的代码文件。
解释说明
现在,我们解析上面代码:
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
pcl/io/pcd_io.h头文件中包含了PCD输入输出操作的声明,pcl/point_types.h头文件则包含一些PointT类型结构体的声明(本例中是pcl::PointXYZ)。
pcl::PointCloud<pcl::PointXYZ>cloud;
描述我们将要实例化的模板类PointCloud,每一个点的类型都被设置成pcl::PointXYZ,作为模板类实例化的参数,其他类型请参考点类型介绍一节,pcl::PointXYZ具体定义如下下面:
// 点PointXYZ类型对应的数据结构
Struct PointXYZ
{
floatx;
floaty;
floatz;
};
下面这几行:
// 创建点云
cloud.width=;
cloud.height=;
cloud.is_dense=false;
cloud.points.resize(cloud.width*cloud.height);
for(size_ti=;i<cloud.points.size();++i)
{
cloud.points[i].x=*rand()/(RAND_MAX+1.0f);
cloud.points[i].y=*rand()/(RAND_MAX+1.0f);
cloud.points[i].z=*rand()/(RAND_MAX+1.0f);
}
用随机点的值填充PointCloud点云对象,并设置适当的参数(width、height、is_dense)。然后:
pcl::io::savePCDFileASCII("test_pcd.pcd",cloud);
把PointCloud对象数据存储在test_pcd.pcd文件中。最后:
std::cerr<<"Saved "<<cloud.points.size()<<" data points to test_pcd.pcd."<<std::endl;
for(size_ti=;i<cloud.points.size();++i)
std::cerr<<" "<<cloud.points[i].x<<" "<<cloud.points[i].y<<" "<<cloud.points[i].z<<std::endl;
上面几行代码用来打印输出存储的点云数据。
编译并运行该程序
利用光盘提供的CMakeLists.txt文件,在cmake中建立工程文件,并生成相应的可执行文件,生成可执行文件之后,就可以运行了,在cmd中使用以下命令:
...>pcd_write.exe
将在cmd界面看到类似下面的东西:
图1 点云写入例子运行结果
Linux下用户可以方便的用下面的命令检查test_pcd.pcd文件的内容,在window上的用户直接用一般的word等就可以对pcd文件进行打开(只限于0.7版本的,低版本的打开显示不完整)。
$ cattest_pcd.pcd
# .PCD v.5 - Point Cloud Data file format
FIELDS x y z
SIZE 4 4 4
TYPE F FF
WIDTH 5
HEIGHT 1
POINTS 5
DATA ascii
0.35222 -0.15188 -0.1064
-0.39741 -0.47311 0.2926
-0.7319 0.6671 0.4413
-0.73477 0.85458 -0.036173
-0.4607 -0.27747 -0.91676
敬请关注PCL(Point Cloud Learning)中国更多的点云库PCL(Point Cloud Library)相关官方教程。
参考文献:
1.朱德海、郭浩、苏伟.点云库PCL学习教程(ISBN 978-7-5124-0954-5)北京航空航天出版社 2012-10
向PCD文件写入点云数据的更多相关文章
- C#向文件写、读数据
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- PCL学习(一)从PLY文件读入点云数据
#include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #inclu ...
- 使用Python写词云数据可视化
词云的应用场景 会议记录 海报制作 PPT制作 生日表白 数据挖掘 情感分析 用户画像 微信聊天记录分析 微博情感分析 Bilibili弹幕情感分析 年终总结 安装本课程所需的Python第三方模块 ...
- 从PCD文件写入和读取点云数据
(1)学习向PCD文件写入点云数据 建立工程文件ch2,然后新建write_pcd.cpp CMakeLists.txt两个文件 write_pcd.cpp : #include <iostr ...
- 点云数据(point cloud) 【转】
转自caimagic的专栏 一:什么是点云数据 点云数据是指在一个三维坐标系统中的一组向量的集合.这些向量通常以X,Y,Z三维坐标的形式表示,而且一般主要用来代表一个物体的外表面形状.不经如此,除(X ...
- 从PCD文件中读取点云数据
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...
- PCL读取PCD文件的数据
1.pcd文件——rabbit.pcd 链接:https://pan.baidu.com/s/1v6mjPjwd7fIqUSjlIGTIGQ提取码:zspx 新建项目pcl rabbit.pcd 和p ...
- PCD(点云数据)文件格式
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=54 为什么用一种新的文件格式? PCD文件格式并非白费力气地做重复工作,现有 ...
- 事务不提交,也有可能写redo和数据文件
事务不提交,也有可能写redo和数据文件
随机推荐
- socket通信——通过Udp传输方式,将一段文字数据发送出去
需求:通过Udp传输方式,将一段文字数据发送出去 定义一个Udp发送端 思路: 1.建立updsocket服务 2.提供数据,并将数据封装到数据包中. 3.通过socket服务的发送功能,将数据包发出 ...
- 一组带Tooltip提示框的CSS3图标按钮
在线演示 本地下载
- jQuery宽屏游戏焦点图
在线演示 本地下载
- 常用阻止ajax缓存方法集锦
HTML 通过添加meta标签 <meta http-equiv= "pragma" content= "no-cache"/> (pragma: ...
- PyVim
PyVim主要用于连接到 Service Instance import atexit from pyVim import connect // Connect to Server If args.d ...
- mysql 主从,主主,主主复制时的主键冲突解决
原理:slave 的i/o thread ,不断的去master抓取 bin_log, 写入到本地relay_log 然后sql thread不断的更新slave的数据 把主服务器所有的数据复制给从服 ...
- MySQL5.7.9(GA)的安装
1.解压ZIP文件到安装目录: 2.进入到bin目录,试运行mysqld --console,查看可能的出错信息,安装相应的辅助软件,如.net V4.0等: 3.编辑my.ini文件,关键内容如下: ...
- 大数据_学习_01_Hadoop 2.x及hbase常用端口及查看方法
二.参考资料 1.Hadoop 2.x常用端口及查看方法
- [原]NYOJ-组合数-32
大学生程序代写 http://acm.nyist.net/JudgeOnline/problem.php?pid=32 /*组合数 时间限制:3000 ms | 内存限制:65535 KB 难度: ...
- Tangent space(切线空间)
https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas The tangent, normal, and binormal unit ...