向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和数据文件
随机推荐
- 《程序员代码面试指南》第五章 字符串问题 去掉字符串中连续出现k 个0 的子串
题目 去掉字符串中连续出现k 个0 的子串 java代码 package com.lizhouwei.chapter5; /** * @Description: 去掉字符串中连续出现k 个0 的子串 ...
- Nginx Rewrite语法详解
重写中用到的指令 if (条件) {} 设定条件,再进行重写 set #设置变量 return #返回状态码 return 403; break #跳出rewrite rewrite #重写 I ...
- Oracle的基本操作
一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...
- 2.HelloWorld程序
1.流程图 2./itcast0711/src/main/java/cn/itcast/a_helloworld/HelloWorld.java package cn.itcast.a_hellowo ...
- spring事务隔离级别以及脏读 不可重复读 幻影读
隔离级别 声明式事务的第二个方面是隔离级别.隔离级别定义一个事务可能受其他并发事务活动活动影响的程度.另一种考虑一个事务的隔离级别的方式,是把它想象为那个事务对于事物处理数据的自私程度. 在一个典型的 ...
- 将jsp页面内容保存到excel(转)
在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地.本篇就是通过export jsp to excel找到的. 原文地址:How to Export We ...
- Android SQLite学习指南
一.SQLite简介 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对 ...
- 分享几个高效编写JS 的心得
原则 不要做任何优化除非的确需要优化 任何的性能优化都必须以测量数据为基础,如果你怀疑代码存在性能问题,首先通过测试来验证你的想法.性能优化三问 我还能做哪些工作从而让代码变得更有效率? 流行的J ...
- ONVIF Device Manager v2.2.146
对接ONVIF使用软件,用于对接支持onvif协议的IPC厂家设置 http://download.csdn.net/detail/li_dabo/9761415
- Java基础 之 System.getProperty()方法
Java基础 之 System.getProperty()方法大全 public static void main(String[] args) { System.out.println(" ...