当前位置: 首页 > 工具软件 > OpenNI > 使用案例 >

OpenNI框架介绍

赵智
2023-12-01

原文:https://blog.csdn.net/magicfrog2009/article/details/73658581

OpenNI中文译为开放自然语言交互,用官方的表述来讲就是a standard framework for 3D sensing,用于3D感知的开发接口;
OpenNI2是第二代版本,相对于第一代更加专注于对3D设备的支持和数据的获取,移除了手势识别等中间件的方式,代码更加的精简,简而言之OpenNI2就是一个RGBD相机的用户态驱动,对上提供统一的接口,方便用户获取RGBD的图像数据,对下提供统一的标准类,方便RGBD厂商进行适配;
目前OpenNI2支持的设备包括PS1080、PSLink、orbbec、Kinect等设备,由于其清晰的代码结构,很容易对第三方设备进行适配;
OpenNI2的源码地址为https://github.com/OpenNI/OpenNI2

OpenNI2的代码目录如下
├── Android.mk
├── Application.mk
├── CHANGES.txt
├── Config
├── Include
├── LICENSE
├── Makefile
├── NOTICE
├── OpenNI.sln
├── Packaging
├── README
├── README.md
├── ReleaseNotes.txt
├── Samples
├── Source
├── ThirdParty
└── Wrappers

Config 目录下存放的是ini格式的配置文件,用于对OpenNI进行配置,同时在其子目录下存放有各个RGBD相机的配置文件如PS1080.ini,可以对相机的帧率、分辨率进行配置;

Include目录下存放头文件;Packaging用于OpenNI2的发布将头文件、so库、配置文件及sample进行打包供用户进行使用;

Sample目录下为demo程序;

Source目录为源代码目录主要包含两部分,一部分为OpenNI的核心代码用于生成libOpenNI2.so,一部分为厂商的底层Driver驱动代码;

ThirdParty为第三方的代码,如GL、JPEG解码、libusb、还有对于操作系统相关的抽象层代码,最重要的就是Build System;

Wrappers主要是OpenNI2的java的封装;

下面介绍下OpenNI2的编译方法和Sample的演示,编译方法在README文件中有详细的介绍,下面是linux部分的摘要
依赖包安装:
sudo apt-get install g++ python libusb-1.0-0-dev libudev-dev default-jdk freeglut3-dev doxygen graphviz
编译:
make ALLOW_WARNINGS=1

在Bin目录下就会生成编译出的so库和sample
.
├── ClosestPointViewer
├── EventBasedRead
├── libDepthUtils.a
├── libMWClosestPoint.so
├── libOpenNI2.jni.so
├── libOpenNI2.so
├── MultiDepthViewer
├── MultipleStreamRead
├── MWClosestPointApp
├── NiViewer
├── OpenNI2
│ └── Drivers
│ ├── libDummyDevice.so
│ ├── libOniFile.so
│ ├── libPS1080.so
│ └── libPSLink.so
├── org.openni.jar
├── org.openni.Samples.SimpleViewer
├── org.openni.Samples.SimpleViewer.jar
├── PS1080Console
├── PSLinkConsole
├── SimpleRead
└── SimpleViewer

在使用PS1080等这些设备的时候有可能出现找不到设备的情况,原因是用户没有访问USB设备的权限,可以通过udev rules进行修改或者直接用sudo运行;
这篇主要简单介绍了OpenNI的,目录结构和编译运行,下一篇会介绍下OpenNI的build system;

作者在ubuntu上搭建OpenNI的环境以及运行相关代码,有一系列的文章见:https://blog.csdn.net/magicfrog2009/category_6989069.html

 类似资料: