打开一个新项目或者已存在的项目用以使用 OpenNI
在Visual Studio 菜单中, 打开项目菜单,选择项目属性.
在C/C++ 选项卡中, 在"常规" 下, 选择 "附加包含目录" ,添加 "$(OPENNI2_INCLUDE)" (32位操作系统)或者添加("$(OPENNI2_INCLUDE64)" (64位操作系统). 环境变量指向本地OpenNI下的 Include文件夹. (默认为C:\Program Files\OpenNI2\Include或者C:\ProgramFilesx86)\OpenNI2\Include)
在连接器选项卡中, 在"常规" 下, 选择"附加库目录",添加"$(OPENNI2_LIB)" (32位操作系统) 或者添加"$(OPENNI2_LIB64)"64位操作系统).
环境变量指向本地OpenNI下的Lib文件夹. (默认为C:\ProgramFiles\OpenNI2\Lib 或者 C:\ProgramFiles(x86)\OpenNI2\Lib)在连接器选项卡中,在“输入”下, 选择"附加依赖项" 添加 OpenNI2.lib
确保你所附加的 Include 和 Library 目录添加到你的 Release 和 Debug配置中.
从 OpenNI's redist 目录中复制所有文件(见换将变量"$(OPENNI2_REDIST)" or"$(OPENNI2_REDIST64)") 到你的工作目录. (默认为 C:\ProgramFiles\OpenNI2\Redist or C:\ProgramFiles(x86)\OpenNI2\Redist).请注意,当你在命令行运行时,工作目录就是可执行文件能够发现的目录, 你从Visual Studio的默认目录运行的地方就是项目文件 (.vcproj,.vcxproj) 能够被发现的地方。
要点提示:
1.openni2的版本与vs2010的版本必须保持一致,都是32位或都是64位
2.redist目录必须想清楚如何填写。。。
#include <iostream>
#include "OpenNI.h"
int main( int argc, char** argv )
{
// 初始化OpenNI环境
openni::OpenNI::initialize(); // 声明并打开Device设备,我用的是Kinect。
openni::Device devAnyDevice;
devAnyDevice.open( openni::ANY_DEVICE ); // 创建并打开深度数据流
openni::VideoStream streamDepth;
streamDepth.create( devAnyDevice, openni::SENSOR_DEPTH );
streamDepth.start(); // 同样的创建并打开彩色图像数据流
openni::VideoStream streamColor;
streamColor.create( devAnyDevice, openni::SENSOR_COLOR );
streamColor.start(); // 循环读取数据流信息并保存在VideoFrameRef中
openni::VideoFrameRef frameDepth;
openni::VideoFrameRef frameColor;
for( int i = ; i < ; ++ i )
{
// 读取数据流
streamDepth.readFrame( &frameDepth );
streamColor.readFrame( &frameColor ); // 获取data array
const openni::DepthPixel* pDepth
= (const openni::DepthPixel*)frameDepth.getData();
const openni::RGB888Pixel* pColor
= (const openni::RGB888Pixel*)frameColor.getData(); // 显示深度信息和对应的彩色R、G、B数值
int idx = frameDepth.getWidth() * ( frameDepth.getHeight() + ) / ;
std::cout << pDepth[idx] << "( "
<< (int)pColor[idx].r << ","
<< (int)pColor[idx].g << ","
<< (int)pColor[idx].b << ")"
<< std::endl;
} // 关闭数据流
streamDepth.destroy();
streamColor.destroy(); // 关闭设备
devAnyDevice.close(); // 最后关闭OpenNI
openni::OpenNI::shutdown(); return ;
}