2012-10-27 18 views
0

我試圖在預先錄製的.oni文件上運行示例openNI骨架跟蹤應用程序(UserTracker.java應用程序)。我編輯了SamplesConfig.xml文件來指導來自ONI文件的輸入,而不是Kinect(我其實沒有)。但是,我收到以下異常。有人可以幫我嗎?在預先錄製的ONI文件上使用openNI進行骨架跟蹤時出現異常

org.OpenNI.StatusException: Function was not implemented!

at org.OpenNI.WrapperUtils.throwOnError(WrapperUtils.java:30)

at org.OpenNI.Context.initFromXmlEx(Context.java:371)

at org.OpenNI.Context.createFromXmlFile(Context.java:36)

at UserTracker.<init>(UserTracker.java:149)

at UserTrackerApplication.main(UserTrackerApplication.java:67)

任何幫助將不勝感激。謝謝!

編輯:我找到了一個解決方案here,這已經消除了我得到的早先例外,但現在我得到以下!

org.OpenNI.StatusException:此操作無效!

有人知道爲什麼會發生這種情況嗎?

回答

2

我有一個類似的問題,我想從我生成的.oni文件讀取數據,並且我遇到了同樣的問題。現在問題解決了,也許你也解決了這個問題,但我認爲向可能發佈到這個帖子的其他人分享信息是很重要的。我在其他人的帖子中發現了一些線索。

所以這裏是解決方案。所述NiUserTracker樣品可以與.oni文件一起使用,以便我檢查代碼和它們執行以下操作:

xn::Player g_Player; //Global variable 

//這正好在主或其它功能

if (argc > 1) 
{ 
    nRetVal = g_Context.Init(); 
    CHECK_RC(nRetVal, "Init"); 
    nRetVal = g_Context.OpenFileRecording(argv[1], g_Player); 
    if (nRetVal != XN_STATUS_OK) 
    { 
     printf("Can't open recording %s: %s\n", argv[1], xnGetStatusString(nRetVal)); 
     return 1; 
    } 
} 

這是C++代碼,我使用C++。所以你可以看到,如果他們想打開一個記錄的.oni文件,他們不會通過XML文件初始化kinect,而是通過Init()方法初始化它,然後用openFileRecording方法打開一個文件。

如果你想打開一個.oni文件就不需要修改你的XML,這樣你就可以做一個應用程序,允許你選擇是否使用.oni或者kinect。

我希望這可以幫助別人。

歡呼聲。