上一篇文章有轉載別人編寫的OpenNI在windows7上安裝及測試,這次就講講如何在vs2010環境下編寫程序獲取數據。
請參照一下步驟進行:
1.創建一個新的或者已有的使用OpenNI的項目
2.在Visual Studio菜單選擇“項目”,再選擇“屬性”。
3.在“配置屬性”的C/C++下,選擇“常規”,再選擇配置項“附加包含目錄”,添加"$(OPEN_NI_INCLUDE)"。這個環境變量指 向OpenNI的Include目錄(默認的目錄是C:\Programfiles\OpenNI\Include)。
4.在“配置屬性”的“連接器”下,選擇“常規”,再選擇配置項“鏈接庫依賴項”,增加"$(OPEN_NI_LIB)"。這個環境變量
向OpenNI的庫目錄(默認爲C:\Programfiles\OpenNI\Lib)。
5.在“配置屬性”的“連接器”下,選擇“輸入”,在選擇“附加依賴項”,添加庫OpenNI.lib。
6.如果你希望使用XML文件來配置OpenNI,你可以從OpenNI的Data目錄下找到基礎XML文件(默認目錄在
C:\Programfiles\OpenNI\Data),更多信息請參考OpenNIxml腳本文件。
7.請確保你對Release和Debug兩套配置都做了上面的步驟。
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]