I/O模块中共有21个类

(1)class pcl::FIleReader:定义了PCD文件的读取接口,主要用作其他读取类的父类   pcl::FileReader有pcl::PCDReader和pcl::PLYReader子类

(2)class pcl::FIleWrite : 与class pcl::FIleReader对应,是写入PCD文件类的接口定义,作为其他写入类的父类,pcl::Filewriter有pcl::PCDwriter和pcl::PLYWriter子类

(3) class pcl::Grabber:类Grabber为PCL1.X对应的设备驱动接口的基类定义

父类                    子类

pcl::ONIGrabber

pcl::Grabber      pcl::OpenNIGrabber

pcl::PCDGrabberBase     ----------pcl::PCDGrabber<  PointT  >

(4)classopenni_wrapper::OpenNIDevice:定义OpenNI设备的基类,用于获取包括红外数据,RGB数据,深度图像数据

父类                                                                 子类

openni_wrapper::DeviceONI

openni_wrapper::OpenNIDevice               openni_wrapper::DeviceKinect

openni_wrapper::DevicePrimesense

openni_wrapper::DeviceXtionPro

PCD(点云数据)文件格式,以下几种格式

(1)PLY是一种多边形文件格式,

(2)STL是3D System公司创建的模型文件格式,主要应用于CAD,CAM领域

(3)OBJ是从几何学上定义的文件格式,

(4)X3D是符合ISO标准的基于XML的文件格式,表示3D计算机图形数据

PCD文件头格式

每个PCD文件包含一个文件头,确定和声明文件中存储这点云的数据的某种特性,PCD文件必须用ASCII码来编码,

(1)VERSION---------指定PCD文件版本

(2) FIELSS------------指定一个点恶意有的每一个维度和字段的名字例如

FILEDS  x y z                                                  #XYZ data

FILEDS x y z rgb                                              #XYZ + color

FILEDS x y z normal_x normal_y normal_z                  #XYZ +surface normal

FILEDS j1 j2 j3                                                         #moment invariants

.....

(3) SIZE-----------用字节数指定每一个维度的大小        例如

unsigned  char/char?      has  1 byte

unsigned  short/short?       has  2 byte

double         ?has  8 byte

(4) TYPE------------用一个字符指定每一个维度的类型  被接受类型有

I----------------表示有符号类型   int8(char)           int16 (short)     int32(int)

U----------------表示无符号类型   ------------------

F----------------表示浮点类型

(5)COUNT----------指定每一维度包含的元数目(默认情况下,没有设置 的话,所有维度的数目被设置为1)

(6)WIDTH------用点的数量表示点云数据集的宽度,根据有序点云还是无序点云,WIDTH有两层解释:

1,它能确定无序数据集的点云中点的个数,

2,它能确定有序点云数据集的宽度

注意有序点云数据集,意味着点云是类似与图像的结构,数据分为行和列,这种点云的实例包括立体摄像机和时间飞行摄像机生成的数据,有序数据集的优势在于,预先了解相邻点(和像素点类似)的关系,邻域操作更加高效,这样就加速了计算并降低了PCL中某些算法的成本。例如:WIDTH   640    #每行有640个点

(7)HEIGHT---------------用点的数目表示点云数据集的高度。类似于WIDTH也有两层解释,

有序点云的例子:WIDTH    640            #像图像一样的有序结构,有640行480列,

HEIGHT   480            #这样该数据集中共有640*480=307200个人点

无序点云例子:

WIDTH  307200

HEIGHT    1              #有307200个点的有序点云数据集

(8)VIEWPOINT--------------------指定数据集中点云的获取视角。VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时,也比较有用,  例如曲面发现,在判断方向一致性时,需要知道视点的方位

视点信息被指为平移(tx ty tz) +四元数(qw qx qy qz)

(9 ) POINTS----------------指定点云中点的总数

(10) DATA---------------指定存储点云数据的数据结构,有两种形式:ASCII和二进制

(注意PCD文件的文件头部分必须是以上部分顺序的精确的指定)

4  数据存储类型:

(1)如果易ASCII形式,每一点占据一个新行,

(2)如果以二进制的形式,这里数据是数组向量的PCL

例子   PCD 文件的一个片段

#。PCD  v.7  --Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F FFF
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.218e+06
0.90805 0.35641 0 4.2108e+06  

微信公众号号可扫描二维码一起共同学习交流

未完待续**************************

PCL中IO模块和类的介绍的更多相关文章

  1. PCL中outofcore模块---基于核外八叉树的大规模点云的显示

    写在前面   最近公众号的活动让更多的人加入交流群,尝试提问更多的我问题,群主也在积极的招募更多的小伙伴与我一起分享,能够相互促进.   这里总结群友经常问,经常提的两个问题,并给出我的回答: (1) ...

  2. 基于传统方法点云分割以及PCL中分割模块

      之前在微信公众号中更新了以下几个章节 1,如何学习PCL以及一些基础的知识 2,PCL中IO口以及common模块的介绍 3,PCL中常用的两种数据结构KDtree以及Octree树的介绍    ...

  3. (Unity)XML文件读写与IO文件操作类使用介绍

    using System.Xml;                //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...

  4. Java学习笔记43(打印流、IO流工具类简单介绍)

    打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...

  5. Java的IO输入输出流类的介绍(有图)

    一.字节流 1.InputStream/OutputStream(输入流与输出流几乎一一对应) 读取的方法   int read()   int read(byte[] buffer)   int r ...

  6. 第9.11节 Python中IO模块文件打开读写操作实例

    为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照 ...

  7. 第9.10节 Python中IO模块其他文件操作属性和方法简介

    本文中所有案例中的fp都是使用open函数打开文件返回的一个文件对象,为了节省篇幅,大部分没有提供文件打开的代码. 一. 文件是否关闭的属性 属性名:closed 功用:判断文件是否关闭 示例: &g ...

  8. C#中的Dictionary字典类常用方法介绍

    using System.Collections.Generic;//引用命名空间//Dictionary可以理解为散列集合 public class DictionaryTest { public ...

  9. kd-tree理论以及在PCL 中的代码的实现

    (小技巧记录:博客园编辑的网页界面变小了使用Ctrl  ++来变大网页字体) 通过雷达,激光扫描,立体摄像机等三维测量设备获取的点云数据,具有数据量大,分布不均匀等特点,作为三维领域中一个重要的数据来 ...

随机推荐

  1. SQL Server 自增字段归零

    方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table 表名 方法二: DBCC CHECKIDENT (''table_name'', ...

  2. OOM killer(Out Of Memory killer)

    最近接连遇到两个情况就是接连进程把kill掉 第一个情况就是有一个java进程被kill了.原因是我这个服务器上海部署了一个node服务,这个node服务大家都不熟悉.所以在使用的时候没有注意内存的使 ...

  3. Jenkins管理静态资源

    这里我们的前端是使用webpack来管理静态资源的,把静态资源上传到svn上面来管理 这里我们把项目和静态资源剥离开来,然后静态资源接入CDN 我们的svn的结构是这样的 我们需要把这些目录都进行打包 ...

  4. Atitti cto的日常流程与职责attilax总结

    Atitti cto的日常流程与职责attilax总结 1. (最重要)技术战略制定 规划,预测趋势1 1.1. 关键词 Throught技术雷达 趋势 没落  已死  辉煌 未来1 1.2. (比较 ...

  5. 在sublime text3中安装sass编译scss文件

    一 搭建环境 首先安装ruby环境,不然会编译失败,在这里下载ruby ,安装的时候选择第二项 在cmd中输入gem -v 显示版本号说明ruby安装成功 待ruby安装成功后,在cmd中输入 gem ...

  6. 聊聊javascript的null和undefined

    只要是说到js的变量和数据类型,就脱不开null和undefined,这兄弟俩就是js的重要基础,不可不察,无数的同学们都用过放大镜多角度多批次地研究过这兄弟俩,真是深受欢迎.^-^ js也真是怪异, ...

  7. visual c++中预定义的宏

    一.主要目标 (由于visual studio通常包含很多开发环境,通常将其中c/c++的ide称为visual c++ 20xx) 整理下visual c++ 2010下预定义的宏.做一下备忘和了解 ...

  8. QQ通信原理及QQ是怎么穿透内网进行通信的?

    http://blog.csdn.net/frank_good/article/details/51160027 ******************************************* ...

  9. 【机器学习】主成分分析PCA(Principal components analysis)

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...

  10. Python3机器学习—Tensorflow数字识别实践

    [本文出自天外归云的博客园] Windows下Anaconda+Tensorflow环境部署 1. 安装Anaconda. 2. 开始菜单 > 所有程序 > Anaconda 3 (64- ...