PCL中所有的处理都是基于点云展开的,利用不同的设备获取点云、存储点云等都是点云处理前后必须做的流程,PCL中有自己设计的内部PCD文件格式,为此,设计读写该该格式以及与其他3D文件格式之间进行转化的接口类都是很有必要的;目前PCL内部支持对常用的3D格式文件的打开与存储操作,以及与PCD内部格式之间的相互转化。

1、OpenNI开源框架

OpenNI(开放式自然交互)专注于提高和改善自然交互设备与应用软件的互操作能力。

OpenNI是一个多语言、跨平台的框架,它定义了一套用于编写通用自然交互应用得API。OpenNI的主要目的就是形成标准的API,便于下面两个接口之间进行通信:

1)视觉和音频传感器(来自感知周围环境信息)。

2)视觉和音频感知中间件(用来对应用场景中所记录的音频和视觉数据进行分析和理解,例如能够接受一份可见的图像数据并返回从中检测到的手掌位置信息)。

OpenNI提供了一组基于传感器设备实现的API另外一组由中间件组件实现的API,打破了传感器和中间件之间的依赖关系。这样,使用OpenNI API开发应用程序时就不需要在各种中间件模块的上层操作上浪费时间,可以做到一次编写、随处部署。

OpenNI的这种分层设计机制允许中间件开发者可以直接基于最原始的数据格式编写算法,而不管这些数据是由何种传感器设备产生,同时也让传感器生产商制造的设备能用于任何OpenNI兼容的应用程序。

OpenNI的这套标准化API使得自然交互应用开发人员可以利用由传感器输入并计算过的数据类型,很方便地跟踪处理显示生活中的场景,这样可以保证编写应用程序的时候,不用考虑传感器或中间件供应商相关的细节。

下图展示了OpenNI框架的应用概念,分为三层:

1)应用层:基于OpenNI实现的自然交互应用软件。

2)中间件接口层:代表OpenNI本身,提供了传感器和中间件组件之间的接口。

3)硬件设备层:列出了捕捉视觉和音频数据的多种硬件设备。

2、OpenNI兼容设备

OpenNI目前已成为PCL集成进来的第一个设备相关的第三方库,用来抓取OpenNI兼容设备中的点云数据。只要底层的硬件传感器设备与OpenNI兼容,都可以作为点云数据输入源,目前较流行的兼容设备,如下

上述三种设备进行点云数据采集,都可以经OpenNI处理后转化为标准数据供上层应用使用。

第四章输入/输出(I/O)4.1I/O涉及的设备及相关概念简介的更多相关文章

  1. 第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍

    PCL中I/O库提供了点云文件输入输出相关的操作类,并封装了OpenNI兼容的设备源数据获取接口,可直接从众多感知设备获取点云图像等数据.I/O模块利用21个类和28个函数实现了对点云的获取.读入.存 ...

  2. Windows程序设计(第五版)学习:第四章 文本输出

    第四章 文本输出 1,客户区:整个应用程序窗口中没有被标题栏.边框.菜单栏.工具栏.状态栏和滚动条占用的区域.简而言之,客户区就是窗口中程序可以在上面绘制并向用户传达可视化信息的区域.   2,大多数 ...

  3. 【知识强化】第五章 输入/输出(I/O)管理 5.2 I/O核心子系统I

    学习I/O核心子系统相关的一系列功能. 设备独立性软件.设备驱动程序.中断处理程序这三层其实是属于操作系统的内核部分的,所以它们也称作“I/O核心子系统”,又可以简称为“I/O系统”.在考研当中我们需 ...

  4. 第15章-输入/输出 --- 理解Java的IO流

    (一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...

  5. python3 第四章 - 输入与输出

    1.输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字. print('hello, world') 输入以上代码,执行后输出: hello, world 事实上,任何基本类型都可 ...

  6. 【知识强化】第五章 输入/输出(I/O)管理 5.1 I/O管理概述

    这门课的最后一个章节——设备管理. 操作系统它作为系统资源的管理者,既需要对上层的软件进行管理,也需要对下层的硬件进行管理.操作系统它需要对处理机还有存储器这些硬件进行管理,但是这些硬件其实是在计算机 ...

  7. 第15章-输入/输出 --- File类

    (一) Java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入.输出两种IO流. 每种输入.输出流又分为字节流和字符流两大类: (1)字节流以字节为单位来处理输入.输出 ...

  8. 【知识强化】第七章 输入/输出系统 7.1 I/O系统基本概念

    那么下面,我们将要进入计算机组成原理的最后一章,也就是我们的第七章,输入输出系统的学习.那么这一部分内容呢,我们之前呢一直在提,但是并没有详细地讲解,那么进入到我们第七章输入输出系统这一部分,我们就要 ...

  9. 【知识强化】第七章 输入/输出系统 7.3 I/O接口

    下面我们进入第七章的第三节,I/O接口. I/O接口呢就是解决了外设和主机之间的一个连接的问题.那么我们这一节就要来看一下I/O接口它有哪些功能,以及它是怎么组成的,还有就是我们主机如何来定位到那样一 ...

随机推荐

  1. file_put_contents();

    file_put_contents(); 用于获取文件中的内容,可以填写网址,但是需要以http://开头

  2. qduoj su003 数组合并

    描述 现在呢有两个整形数组,a[n]和b[m],而且已经知道这两个数组都是非降序数组.现在呢就有一个工作需要你来完成啦.对于a中的每个元素a[i]在b中寻找<=a[i] 的元素个数,个数记为x[ ...

  3. The Sum of 0 for four numbers(拆解加二分思想)

    个人心得:单纯用二分法一直超时,后面发现我的那种方法并没有节省多少时间,后面看了大神的代码,真的是巧妙, 俩个数组分别装a+b,c+d.双指针一个指向最后,从第一个开始想加,加到刚好大于0停止,再看是 ...

  4. jsp中引入JavaScript的方法

    1:在页面中直接嵌入JavaScript <script language="javascript">..........</script> 2:链接外部J ...

  5. python函数-filter()

    filter(func, seq)  filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断, ...

  6. POJ3468:A Simple Problem with Integers

    浅谈分块:https://www.cnblogs.com/AKMer/p/10369816.html 题目传送门:http://poj.org/problem?id=3468 分块裸题.对于每个块记录 ...

  7. Activiti:MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。

    在win下开发,有时编译或运行项目会报3字节的UTF-8序列的字节3无效. 解决该问题的办法 1.将xml头文件改为GBK编码方式 ,我这里不OK <?xml version="1.0 ...

  8. 如何安装搜索引擎Elasticsearch?

    最近工作中要用到搜索引擎,由于目前用的搜索引擎是LeanCloud 提供的 ,不太好用,不支持范围等搜索,而且每天还收费30元,请求次数也有限制.基于这些原因,我们只好在自己的服务器上部署搜索引擎了. ...

  9. Python:列表中,增加元素、删除元素、切片、其它

    一.向列表中增加元素 list.append(单个元素):在list列表末端增加一个元素: list.extend([元素1,元素2]):在list列表末端增加多个元素: list.insert(元素 ...

  10. mybatis sql中的条件语句

    1.mybatis判断是否为空或null <if test="type!=null and type!=''"> AND type = #{type} </if& ...