目录
http://blog.sina.com.cn/s/blog_4a628f030102v6k4.html
http://blog.sina.com.cn/s/blog_4a628f030102v6k4.html
*高级API的四个主要类:
1) openni::OpenNI – 提供一个单一静态的API入口点。同时提供访问设备的途径,设备相关的事件,版本及错误信息。被用来建立与Device的连接。
2) openni::Device – 提供连接到系统的单一传感器设备的接口。 在被创建前要求OpenNI先进行初始化。 Devices提供访问Streams的途径。
3) openni::VideoStream – 抽象化一个单一视屏流。从一个特定的Device中获取。用来获取VideoFrameRefs。
4) openni::VideoFrameRef – 抽象化一个单一视屏元数据(meta-data)并和其相关。
从一个特定的Stream获取。
*支援类:
Recorder:用来把OpenNI视屏流储存到文件
Listener Classes(多个):监听OpenNI和Stream产生的事件。
OpenNI 类
*到设备(Device)的基本访问:
OpenNI类提供到API的静态入口点——OpenNI::initialize():这个函数初始化所有可用的传感器驱动,并扫描系统寻找可用设备。任何使用OpenNI的应用程序都应在最初调用此函数。一旦执行过初始化函数,就可以创建Device对象了,并用它们和真实的传感器硬件进行通信。
OpenNI::enumerateDevices():返回一个所有连接系统的可用设备的列表。
OpenNI::shutdown():当应用程序准备退出时,这个函数应被调用关闭所有驱动并作适当清理。
*到视屏流(Video Streams)的基本访问:
访问(视屏)流的轮询(polling)系统可通过OpenNI::waitForAnyStream()实现:该函数用一个流列表作为传入参数之一。当被调用时,它进行阻塞直到列表中的任一流有新的可用数据。然后它会返回一个状态码并说明是哪个流有可用数据。这个函数可用来实现一个关于新的可用数据的轮询循环。
*到设备(Device)的事件驱动的访问:
OpenNI类提供一个以事件驱动方式访问设备的框架。它定义了三种事件:
onDeviceConnected:当一个新的设备通过OpenNI接入且可用是产生
onDeviceDisconnected:从系统中移除某一设备时产生
onDeviceStateChanged:当设备的设置放生变动时产生
监听类可通过以下方法被添加到事件句柄列表或被移除:
OpenNI::addDeviceDisconnectedListener()
OpenNI::addDeviceDisconnectedListener()
OpenNI::addDeviceStateChangedListener()
OpenNI::removeDeviceConnectedListener()
OpenNI::removeDeviceDisconnectedListener()
OpenNI::removeDeviceStateChangedListener()
以上三种事件均提供一个指向openNI::DeviceInfo对象的指针。这个对象可用来获取事件相关设备的的细节并对设备进行鉴别。另外,onDeviceStateChanged事件还提供一个指向DeviceState对象的指针,可用来查看设备的新状态。
*错误信息:
当错误发生时,类型Status会包含一段可记录进日志或显示给用户查看的代码。
OpenNI::getExtendedError():返回一段额外的,人为可读的错误信息。
*版本信息:
通过OpenNI::getVersion()返回。