recordしたデータを読み込んだ場合にRegisterSessionでBAD_ACCESSが発生します

177 views
Skip to first unread message

いちかわ

unread,
Feb 8, 2012, 6:07:46 AM2/8/12
to Shibuya.NI
こんにちは、市川です。

gestureの勉強をするにあたって、毎回センサーをつなぐのは不便かと思い
OpenFileRecordingを使ってoniファイルを読み込んで動作させようとしています。

Kinectセンサーをつないでデータを保存し、それを読み込んで再生しようとすると、
XnVSessionManager::RegisterSession の所で、BAD_ACCESSが発生してしまいます。

原因がわからず、ハマっています。。。

どなたか、保存したデータを読み込んで、gestureのデバッグを行なう方法について教えていただけますでしょうか?

実際に動かしているプログラムはgithubに上げてあります。
http://bit.ly/Atw3EF

BAD_ACCESSが発生する箇所は、main.cppの350行目の
XnVHandle sessionCallback = sessionManager.RegisterSession(NULL,
&SessionStart, &SessionEnd);
です。

よろしくお願いします。

西林孝

unread,
Feb 9, 2012, 9:34:55 AM2/9/12
to shibu...@googlegroups.com
hagino3000です
ちょっとみてみます。

2012年2月8日20:07 いちかわ <jun...@gmail.com>:

西林孝

unread,
Feb 9, 2012, 12:14:34 PM2/9/12
to shibu...@googlegroups.com
BAD_ACCESSにはなりませんが
"No hand generator found. One is needed for session manager."
となりますね。
手元の環境なので OpenNI 1.5.2.7 です。

2012年2月9日23:34 西林孝 <takashi.ni...@gmail.com>:

Jun ichikawa

unread,
Feb 9, 2012, 7:50:35 PM2/9/12
to shibu...@googlegroups.com
hagino3000さん

ありがとうございます。

そもそもな質問ですが、レコードしたデータから読み込んだ時に
gestureの処理は実行できるのでしょうか?


西林さん

私の時も最初にそのエラーが出ました。
ただ、発生した場所は以下のところでした。
XnVSessionManager sessionManager;
nRetVal = sessionManager.Initialize(&g_Context, "Wave,Click", "RaiseHand");

そこで、以下を足してみたらそのエラーが出なくなった代わりに、最初の質問の
問題に当たりました。
// HandGeneratorの取得
nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_HANDS, g_HandsGenerator);
if(nRetVal!=XN_STATUS_OK){
nRetVal = g_HandsGenerator.Create(g_Context);
CHECK_RC(nRetVal, "Create hand generator");
}

// GestureGeneratorの取得
nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_GESTURE, g_GestureGenerator);
if(nRetVal!=XN_STATUS_OK){
nRetVal = g_GestureGenerator.Create(g_Context);
CHECK_RC(nRetVal, "Create gesture generator");

Jun Ichikawa

unread,
Feb 11, 2012, 1:44:03 AM2/11/12
to shibu...@googlegroups.com
原因がわかりました。

ビルドの設定でリンカーが古いままでした。。orz

libXnVHandGenerator_1_5_2.dylib
libXnVFeatures_1_5_2.dylib
に変えたら、うまくいきました。

お騒がせしてすみません。


2012年2月10日9:50 Jun ichikawa <jun...@gmail.com>:

hagino3000

unread,
Feb 16, 2012, 10:00:50 PM2/16/12
to Shibuya.NI
hagino3000です。

この時Hands GeneratorやGesture generatorは作らないと無いので
次みたいなコードを書いてあげると動きます。

rc = context.OpenFileRecording(ONI_FILE_PATH);
context.StartGeneratingAll();

xn::DepthGenerator depth;
rc = context.FindExistingNode(XN_NODE_TYPE_DEPTH, depth);

xn::GestureGenerator gesture;
gesture.Create(context);

xn::HandsGenerator hands;
hands.Create(context);

XnVSessionManager sessionManager;
rc = sessionManager.Initialize(&context, "Wave,Click",
"RaiseHand");

On 2月11日, 午後3:44, Jun Ichikawa <jun1...@gmail.com> wrote:
> 原因がわかりました。
>
> ビルドの設定でリンカーが古いままでした。。orz
>
> libXnVHandGenerator_1_5_2.dylib
> libXnVFeatures_1_5_2.dylib
> に変えたら、うまくいきました。
>
> お騒がせしてすみません。
>
> 2012年2月10日9:50 Jun ichikawa <jun1...@gmail.com>:
> >> 2012年2月9日23:34 西林孝 <takashi.nishibaya...@gmail.com>:
> >>> hagino3000です
> >>> ちょっとみてみます。
>
> >>> 2012年2月8日20:07 いちかわ <jun1...@gmail.com>:

Jun ichikawa

unread,
Feb 17, 2012, 12:09:07 AM2/17/12
to shibu...@googlegroups.com
hagino3000さん

サンプルありがとうございます!

Reply all
Reply to author
Forward
0 new messages