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. jeecg中的一个上下文工具类获取request,session

    通过调用其中的方法可以获取到request和session,调用方式如下: HttpServletRequest request = ContextHolderUtils.getRequest();H ...

  2. MySQL 死锁与日志二三事

    最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现.甚至有些异常还比较诡异,最后 root cause 分析颇费周折.那实际业务当 ...

  3. MySql(十二):MySql架构设计——可扩展设计的基本原则

    一.前言 科技在发展,硬件设备的发展渐渐无法满足应用系统对处理能力的要求.不过,我们还是可以通过改造系统的架构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力的系统,也就 ...

  4. LeetCode OJ 之 Maximal Square (最大的正方形)

    题目: Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ...

  5. ubuntu for win10 里运行net core

    花了点时间在ubuntu for win10里运行net core 按官网上ubuntun10.14装的net core指令 ...... ...... sudo apt-get install do ...

  6. 菜鸟教程之工具使用(四)——借助JRebel使Tomcat支持热部署

    JRebel是一个J2EE热部署的工具.使用它可以减少浪费8-18%的开发时间在项目的构建和部署上.虽然Java也提供了HotSpot的JVM,但是如果你修改的类中有方法名称变动的话,HotSpot就 ...

  7. HR必备基础能力之人性

    https://www.jianshu.com/p/bbb858431c81 人力资源管理-从新手到入门(正文) 第一章 必备基础能力 第三节 人性 人力资源管理者(HR)日常工作中面对的主要对象是人 ...

  8. (原创)C++11改进我们的程序之move和完美转发

    本次要讲的是右值引用相关的几个函数:std::move, std::forward和成员的emplace_back,通过这些函数我们可以避免不必要的拷贝,提高程序性能.move是将对象的状态或者所有权 ...

  9. 【Linux】了解服务器的情况

    Java程序大多数都部署在Unix环境,而环境的稳定性对于部署的应用至关重要,所以Java开发人员需知道了解Unix环境的命令. 系统版本 查看系统版本 [root@localhost third_p ...

  10. 【嵌入式】bootloader,linux,filesystem的烧写

    平台: 深圳市优龙科技有限公司的FS2410(基于ARM9) 准备: 1.用串口(UART1,J8)线与PC机相连,这个是用来传输数据和显示信息的 2.连接USB数据下载线(usb device),注 ...