出力方法を変えてみました。printfからiostreamのcoutに。
以下のような感じ。ちなみに,右手のボーンデータの位置を出力しています。
void DrawLimb(XnUserID player, XnSkeletonJoint eJoint1, XnSkeletonJoint eJoint2)
{
static bool flag=false;
if (!g_UserGenerator.GetSkeletonCap().IsTracking(player))
{
printf("not tracked!\n");
return;
}
XnSkeletonJointPosition joint1, joint2;
g_UserGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, eJoint1, joint1);
g_UserGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, eJoint2, joint2);
if (joint1.fConfidence < 0.5 || joint2.fConfidence < 0.5)
{
return;
}
//ofstream fout(file_output);
//出力先のファイルを作成
flag=true;
XnPoint3D pt[2];
pt[0] = joint1.position;
pt[1] = joint2.position;
g_DepthGenerator.ConvertRealWorldToProjective(2, pt, pt);
cout << pt[1].X <<"\t"<
glVertex3i(pt[0].X, pt[0].Y, 0);
glVertex3i(pt[1].X, pt[1].Y, 0);
}
一回ファイルに保存しようかとも思ったけど,
ofstream fout(file_output); をどこに書けばいいかわからなかったので,
あきらめてcoutで画面出力することに。
そしたら以前とうってかわって以下のように出てきました。
前は意味のわからないデータだったけれどいけそうかな?問題はデータの型かなー.
GLintってなんですか?windowsのAPIがどーちゃらこーちゃら。\(^o^)/」
画像から見てわかるように,手の移動に応じて,それらしい値が取れたので,値をマウスのイベントに代入して動かしてみようと思います。問題は最大値と最小値がまだわからないということ。
640*480で出てくると思ったんだけど,違うみたいです。ん?
あと,気付いたことと言えばPrintscreenがおかしいです。モノクロで出力って…。
PR