初學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處添加驗錯代碼,以確定錯誤的地方。



以上如有問題,請不要吝嗇你的批評。

有問題歡迎與我討論:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章