没有合适的资源?快使用搜索试试~ 我知道了~
OpenNI Migration Guide
5星 · 超过95%的资源 需积分: 9 31 下载量 20 浏览量
2013-03-17
15:37:43
上传
评论
收藏 140KB PDF 举报
温馨提示
试读
18页
对OpenNI2提供的类进行详细描述,详述了OpenNI2与OpenNI1.5的区别。
资源推荐
资源详情
资源评论
OPENNI MIGRATION GUIDE
OpenNI/NiTE 2Migration GuideTransitioning from OpenNI/NiTE 1.5 to
OpenNI/NiTE 2Document Version 1.0March 2013
Disclaimer and Proprietary Information Notice
The information contained in this document is subject to change without notice and does not
represent
a commitment by PrimeSense Ltd. PrimeSense Ltd.
and its subsidiaries make no warranty of any kind with regard to this material,
including, but not limited to implied warranties of merchantability
and fitness for a particular purpose whether arising out of law, custom, conduct or otherwise.
While the information contained herein is assumed to be accurate, PrimeSense Ltd. assumes no
responsibility
for any errors or omissions
contained herein, and assumes no liability for special, direct, indirect
or consequential damage, losses, costs, charges, claims, demands, fees or
expenses, of any nature or kind, which are incurred in connection with the
furnishing, performance or use of this material.
This document contains proprietary information, which is protected by U.S. and international
copyright laws.
All rights reserved. No part of this document may be reproduced, photocopied or translated into
another language
without the prior written consent of PrimeSense Ltd.
License Notice
OpenNI is written and distributed under the Apache License, which means that its source code is
freely-distributed and available to the general public.
You may obtain a copy of the License at:http://www.apache.org/licenses/LICENSE-2.0[1]
NiTE is a proprietary software item of PrimeSense and is written and licensed under the NiTE
License terms, which might be amended from time to time. You should have received a copy of
the NiTE License along with NiTE.
The latest version of the NiTE License can be accessed
at:http://www.primesense.com/solutions/nite-middleware/nite-licensing-terms/[2]
Trademarks
PrimeSense, the PrimeSense logo, Natural Interaction, OpenNI, and NiTE are trademarks and
registered trademarks of PrimeSense Ltd. Other brands and their products are trademarks or
registered trademarks of their respective holders and should be noted as such.
1 Introduction
1.1 Scope
This guide is targeted at developers using OpenNI versions that came before OpenNI 2, with
particular emphasis on those developers using OpenNI1.5.2 who are interested in transitioning
to OpenNI 2. This guide is designed as both an aid to porting existing applications from the old
API to the new API, as well as to enable experienced OpenNI developers to learn and understand
the concepts that have changed in this new API.
This guide provides a general overview to all programming features that have changed.
Included also is a lookup table of all classes and structures in OpenNI 1.5, showing the
equivalent functionality in OpenNI 2.
1.2 Audience
The intended audience of this document is the OpenNI 1.5.x developer community interested in
moving to OpenNI 2.
1.3 Related Documentation
[1] NiTE 2 Programmerӳ Guide, PrimeSense.
1.4 Support
The first line of support for OpenNI/NiTE developers is the OpenNI.org web site. There you will
find a wealth of development resources, including ready-made sample solutions and a large and
lively community of OpenNI/NiTE developers. See:
http://www.OpenNI.org[3]
If you have any questions or require assistance that you have not been able to obtain at
OpenNI.org, please contact PrimeSense customer support at:
Support@primesense.com[4]
2 Overview
2.1 New OpenNI Design Philosophy
OpenNI 2 represents a major change in the underlying design philosophy of OpenNI. A careful
analysis of the previous OpenNI API, version 1.5, revealed that it has many features that are
rarely or never used by the developer community. When designing OpenNI 2, PrimeSense has
endeavored to greatly reduce the complexity of the API. Features have been redesigned around
basic functionality that was of most interest to the developer community. Of especial
importance is that OpenNI 2 vastly simplifies the interface for communicating with depth
sensors.
2.2 Simplified Middleware Interface
The plug-in architecture of the original OpenNI has been removed completely. OpenNI 2 is now
strictly an API for communicating with sources of depth and image information via underlying
drivers. PrimeSense NiTE middleware algorithms for interpreting depth information are now
available as a standalone middleware package on top of OpenNI, complete with their own API.
Previously, the API was through OpenNI only and you included NiTE functionality via plug-ins.
The following high level diagram compares the OpenNI/NiTE 2 architecture with the
OpenNI/NiTE1.5 architecture.
[5]
Figure ?2-1: Comparison of OpenNI/NiTE 2 architecture with OpenNI/NiTE1.5
NiTE 2 API is summarized in Chapter ?10, and is described in detail in the NiTE 2 Programmerӳ
Guide.
PrimeSense is not aware of any third party middleware that actually made use of the provided
OpenNI plug-In interfaces. All known third party middleware simply had been built to run on top
of OpenNI. By simplifying the underlying interfaces that middleware developers are actually
using, it is hoped that third party middleware providers will find it easier to implement their
products on OpenNI.
2.3 Simplified Data Types
OpenNI 1.5 had a wide variety of complex data types. For example, depth maps were wrapped
in metadata. This made it more complicated to work with many types of data that, in their raw
form, are simply arrays. OpenNI 2 achieves the following:
Unifies the data representations for IR, RGB, and depth data
Provides access to the underlying array
Eliminates unused or irrelevant metadata
OpenNI 2 allows for the possibility of not needing to double buffer incoming data
OpenNI 2 solves the double buffering problem by performing implicit double buffering. Due to
the way that frames were handled in OpenNI 1.5, the underlying SDK was always forced to
double buffer all data coming in from the sensor. This had implementation issues, complexity
problems and performance problems. The data type simplification in OpenNI 2 allows for the
possibility of not needing to double buffer incoming data. However, if desired it is still possible
to double-buffer. OpenNI 2 allocates one or more user buffers and a work buffer.
2.4 Transition from Data Centric to Device Centric
The overall design of the API can now be described as device centric, rather than data centric.
The concepts of Production Nodes, Production Graphs, Generators, Capabilities, and other such
data centric concepts, have been eliminated in favor of a much simpler model that provides
simple and direct access to the underlying devices and the data they produce. The functionality
provided by OpenNI 2 is generally the same as that provided by OpenNI 1.5.2, but the
complicated metaphors for accessing that functionality are gone.
2.5 Easier to Learn and Understand
It is expected that the new API will be much easier for programmers to learn and begin using.
OpenNI 1.5.2 had nearly one hundred classes, as well as over one hundred supporting data
structures and enumerations. In OpenNI 2, this number has been reduced to roughly a dozen,
with another dozen or so supporting data types. The core functionality of the API can be
understood by learning about just four central classes:
openni::OpenNI
openni::Device
openni::VideoStream
openni::VideoFrameRef
Unfortunately, this redesign has required us to break backward compatibility with OpenNI 1.5.2.
The decision to do this was not made lightly; however, it was deemed necessary in order to
achieve the design goals of the new API.
2.6 Event Driven Depth Access
In OpenNI 1.5 and before, depth was accessed by placing a loop around a blocking function that
provided new frames as they arrive. Until a new frame arrived the thread would be blocked.
OpenNI 2 still has this functionality, but it also provides callback functions for event driven
depth reading. These callback functions are invoked on sensors becoming available (further
sensors can be connected to the host system while OpenNI is running), and on depth becoming
available.
剩余17页未读,继续阅读
资源评论
- 此时时此刻刻2014-09-22正是我需要的,找了很久,是英文的,我有空把它翻译出来看。
- w255662014-10-16写的不错,很有价值
- Zayn_L2015-03-06后面那个函数对照表太实用了!!!
- PandaL332014-09-02内容详细,还不错~
- AIMRIPEKY2014-06-13对我用处不大
蛛菲娅
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功