0

サンプルの openNI Skeleton Tracking アプリケーション (UserTracker.java アプリケーション) を事前に記録された .oni ファイルで実行しようとしています。SamplesConfig.xml ファイルを編集して、Kinect ではなく ONI ファイルからの入力を指示しました (実際には持っていません)。ただし、次の例外が発生します。ここで誰か助けてくれませんか?

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)

どんな助けでも大歓迎です。ありがとう!

編集:ここで解決策を見つけました。これにより、以前に発生していた例外が削除されましたが、次のようになりました!

org.OpenNI.StatusException: この操作は無効です!

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

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のどちらを使用するかを選択できるアプリケーションを実行できます。

これが誰かに役立つことを願っています。

乾杯。

于 2012-11-22T17:36:20.123 に答える