• 初學OpenNI


             上一篇文章有转载别人编写的OpenNI在windows7上安装及测试,这次就讲讲如何在vs2010环境下编写程序获取数据。

    请参照一下步骤进行:

    1.创建一个新的或者已有的使用OpenNI的项目

    2.Visual Studio菜单选择“项目”,再选择“属性”。

    3.在“配置属性”的C/C++下,选择“常规”,再选择配置项“附加包含目录”,添加"$(OPEN_NI_INCLUDE)"。这个环境变量指           向OpenNIInclude目录(默认的目录是C:\Programfiles\OpenNI\Include)。

    4.在“配置属性”的“连接器”下,选择“常规”,再选择配置项“链接库依赖项”,增加"$(OPEN_NI_LIB)"。这个环境变量

      向OpenNI的库目录(默认为C:\Programfiles\OpenNI\Lib)。

    5.在“配置属性”的“连接器”下,选择“输入”,在选择“附加依赖项”,添加库OpenNI.lib

    6.如果你希望使用XML文件来配置OpenNI,你可以从OpenNIData目录下找到基础XML文件(默认目录在

        C:\Programfiles\OpenNI\Data),更多信息请参考OpenNIxml脚本文件。

    7.请确保你对ReleaseDebug两套配置都做了上面的步骤。

    8.你的代码如果是C,应该包含XnOpenNI.h头文件,如果是C++,应该包含XnCppWrapper.h头文件.


    以下是代码框架告诉你怎么处理程序:
    XnStatus nRetVal = XN_STATUS_OK; 
    xn::Context  context; 
    
    // 初始化上下文对象 
    nRetVal = context.Init();
    // TODO: 检查错误码,即看nRetVal是否等于XN_STATUS_OK 
    
    // 创建深度生产节点
    xn::DepthGenerator depth; 
    nRetVal = depth.Create(context); 
    // TODO: 检查错误码,即看nRetVal是否等于XN_STATUS_OK 
    
    // 开始生产数据 
    nRetVal = context.StartGeneratingAll();
    // TODO: 检查错误码,即看nRetVal是否等于XN_STATUS_OK
    
    // 主循环 
    while (bShouldRun)
    { 
    	// 等待数据更新
    	nRetVal = context.WaitOneUpdateAll(depth); 
    	if (nRetVal != XN_STATUS_OK) 
    	{ 
      		printf("Failed updating data: %s\n", xnGetStatusString(nRetVal)); 
      		continue; 
    	} 
    
    	// 获得当前深度图 
    	const XnDepthPixel* pDepthMap = depth.GetDepthMap(); 
    
    	// TODO:处理深度图 
    }
    
    // 释放资源 
    context.Shutdown();
    
    
    



    如果不想出了错误而不知道错误在哪里,请在上面代码中TODO处添加验错代码,以确定错误的地方。

    
    

    
    

    以上如有问题,请不要吝啬你的批评。

    有问题欢迎与我讨论:wl_soft50@163.com

  • 相关阅读:
    嵌入式硬件设计时所需考虑的几个问题
    MySQL网络配置
    MySQL数据库操作技术大全
    关于硬件芯片未用引脚的处理方法
    与嵌入式软件开发相关的一些硬件知识
    C语言-联合(union)
    AtCoder Regular Contest 101 D
    AtCoder Regular Contest 101 C
    AtCoder Regular Contest 102 C
    线性基学习
  • 原文地址:https://www.cnblogs.com/leven20061001/p/2724714.html
Copyright © 2020-2023  润新知