PCL中IO模块和类的介绍
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模块和类的介绍的更多相关文章
- PCL中outofcore模块---基于核外八叉树的大规模点云的显示
写在前面 最近公众号的活动让更多的人加入交流群,尝试提问更多的我问题,群主也在积极的招募更多的小伙伴与我一起分享,能够相互促进. 这里总结群友经常问,经常提的两个问题,并给出我的回答: (1) ...
- 基于传统方法点云分割以及PCL中分割模块
之前在微信公众号中更新了以下几个章节 1,如何学习PCL以及一些基础的知识 2,PCL中IO口以及common模块的介绍 3,PCL中常用的两种数据结构KDtree以及Octree树的介绍 ...
- (Unity)XML文件读写与IO文件操作类使用介绍
using System.Xml; //xml文件操作命名空间 #region 写入操作 void WriteXMLFile(string _fileName) { Xm ...
- Java学习笔记43(打印流、IO流工具类简单介绍)
打印流: 有两个类:PrintStream,PrintWriter类,两个类的方法一致,区别在于构造器 PrintStream:构造方法:接收File类型,接收字符串文件名,接收字节输出流(Outpu ...
- Java的IO输入输出流类的介绍(有图)
一.字节流 1.InputStream/OutputStream(输入流与输出流几乎一一对应) 读取的方法 int read() int read(byte[] buffer) int r ...
- 第9.11节 Python中IO模块文件打开读写操作实例
为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照 ...
- 第9.10节 Python中IO模块其他文件操作属性和方法简介
本文中所有案例中的fp都是使用open函数打开文件返回的一个文件对象,为了节省篇幅,大部分没有提供文件打开的代码. 一. 文件是否关闭的属性 属性名:closed 功用:判断文件是否关闭 示例: &g ...
- C#中的Dictionary字典类常用方法介绍
using System.Collections.Generic;//引用命名空间//Dictionary可以理解为散列集合 public class DictionaryTest { public ...
- kd-tree理论以及在PCL 中的代码的实现
(小技巧记录:博客园编辑的网页界面变小了使用Ctrl ++来变大网页字体) 通过雷达,激光扫描,立体摄像机等三维测量设备获取的点云数据,具有数据量大,分布不均匀等特点,作为三维领域中一个重要的数据来 ...
随机推荐
- 由初始化线程池引发的NoClassDefFoundError 异常分析
今天说的异常是一个很不常见的异常,至少我不经常见到这个异常.首先先看下NoClassDefFoundError官方定义 : Java Virtual Machine is not able to fi ...
- Atitit 我们的devops战略与规划 规范 推荐标准
Atitit 我们的devops战略与规划 规范 推荐标准 1. Vm容器化1 2. 热部署tomcat+jrebel 或者resin1 3. 增量更新与差异更新1 4. 补丁提取与应用2 为了方便提 ...
- Atitit 项目源码的架构,框架,配置与环境说明模板 规范 标准化
Atitit 项目源码的架构,框架,配置与环境说明模板 规范 标准化 版本1.0 作者 艾龙 attilax 1. 概述:核心业务: 1 1.1. 功能文档路径 /palmWin/src/docum ...
- git rm与git rm --cached
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用 git rm file_path git commit -m 'delete somefile' git push 当我 ...
- android---笔记 AppContext extends Application
package com.fuda; import org.apache.http.client.CookieStore; import com.fuda.model.StudentInfoModel; ...
- Asp.net Core 项目API接口服务器部署
Windows server 2008服务器部署: DotNetCore.1.0.0.RC2-WindowsHosting 或者DotNetCore.1.0.5_1.1.2-WindowsHostin ...
- (原创)用c++11实现简洁的ScopeGuard
ScopeGuard的作用是确保资源面对异常时总能被成功释放,就算没有正常返回.惯用法让我们在构造函数里获取资源,当因为异常或者正常作用域结束,那么在析构函数里释放资源.总是能释放资源.如果没有异常抛 ...
- 【delphi】delphi操作sqlite3
SQLite SQLite是一个老牌的轻量级别的本地文件数据库,完全免费且开源,不需要安装,无须任何配置,当然,这样管理功能就不是很强大了,但是它的主要应用也是在本地数据库,可以说是最简单好用的嵌入式 ...
- Asp.Net MVC简单三层架构(MVC5+EF6)
三层架构与MVC的关系 三层架构是一个分层式的软件体系架构设计,分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).分层的目的是为了实现“高内聚,低耦合”的思想,有利于系统后期的维护.更 ...
- API:详解 pandas.read_csv
pandas.read_csv 作为常用的读取数据的常用API,使用频率非常高,但是API中可选的参数有哪些呢? pandas项目代码 答案是: .read_csv(filepath_or_buffe ...