打开一个新项目或者已存在的项目用以使用 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 = 0; i < 1000; ++ 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() + 1 ) / 2; 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 0; }