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. PHP的生成器、yield和协程

    虽然之前就接触了PHP的yield关键字和与之对应的生成器,但是一直没有场景去使用它,就一直没有对它上心的研究.不过公司的框架是基于php的协程实现,觉得有必要深入的瞅瞅了. 由于之前对于生成器接触不 ...

  2. 幽灵漏洞(Ghost gethost)

    幽灵漏斗简介: 编号CVE-2015-0235的GHOST(幽灵)漏洞是Qualys研究员发现的一个Linux服务上非常严重的安全漏洞,可以被利用来远程代码执行及本地权限提升. 漏洞简要描述 该漏洞存 ...

  3. jQuery学习笔记(jquery.simplemodal插件)

    官网地址:http://www.ericmmartin.com/ SimpleModal是一个轻量级的jQuery插件,它为模式窗口的开发提供了一个强有力的接口,可以把它当作模式窗口的框架.Simpl ...

  4. [转载]Cortana 设计指导方针

    来源:@微软中国MSDN,源地址:http://weibo.com/p/1001603898586285925224 使用语音命令,延伸 Cortana 与您的应用程序所提供的功能.启动应用程序,启动 ...

  5. log4j的正确使用姿势

    最近清明节,朋友公司的日志爆了,说控制台打得太满了,出了问题,早上4点多被喊去公司修改代码,他们把所有的日志全部在控制台打印了,结果就...我说日志这么做不可取啊,你们打印出来的内容太多啦,控制台没必 ...

  6. 【Unity】11.8 关节

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了下面的关节组件:铰链关节(Hinge Joint).固定关节(Fixed Joint).弹簧关节(Spr ...

  7. 【Unity】11.6 恒定力 (Constant Force)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 恒定力 (Constant Force) 是用于向刚体 (Rigidbody) 添加恒定力的快速实用工具,适用于类似火箭 ...

  8. lua--clone

    clone 深度克隆一个值. 格式: value = clone(值) 用法示例: -- 下面的代码,t2 是 t1 的引用,修改 t2 的属性时,t1 的内容也会发生变化 , b = } local ...

  9. SQL 中 replace 替换字符串中的字符 ''

    update CfmRcd set reconsource=replace(reconsource,'''',''), cmffile =replace(cmffile,'''',''), cfmda ...

  10. 《转》冯森林:手机淘宝中的那些Web技术(2014年)

    Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开发成本,同时还可以方便的进行功能迭代更新.但是如何保证Web APP的流畅 ...