0

私はkinectジェスチャアプリケーションを開発しています。だから私はインターネットからジェスチャーを手に入れるためのコードを手に入れました。

handupgesture()
{

 bool up = false;
 float refDistance = 0.2F;

 SkeletonPoint refPos = localSkeletonHistory[0].Joints[JointType.ShoulderCenter].Position;
 SkeletonPoint startPos = localSkeletonHistory[0].Joints[JointType.HandRight].Position;

 for (int i = 20; i < localSkeletonHistory.Count; i++)
 {
           if (!(Math.Abs(localSkeletonHistory[i].Joints[JointType.ShoulderCenter].Position.Y - refPos.Y) < 0.05F &&
                   Math.Abs(localSkeletonHistory[i].Joints[JointType.HandRight].Position.X - startPos.X) < 0.05F &&
                   Math.Abs(localSkeletonHistory[i].Joints[JointType.HandRight].Position.Z - startPos.Z) < 0.05F ))
            {
                break;
            }
            if (localSkeletonHistory[i].Joints[JointType.HandRight].Position.Y >= (startPos.Y + refDistance))
            {
                up = true;
                SkeletonHistory.Clear();
                break;
            }
        }
        return up;
} 

私の疑問は次のとおりです。

  • 0.05Fとは?それはメートルですか?センチメートル ?
  • Z 軸距離は、kinect からの関節の距離を意味します。それは...ですか ?

このコードはハンドアップを検出していません。間違いや提案はありますか?

4

1 に答える 1

1

0.05FinC#は浮動小数点数を意味します。

float キーワードは、32 ビットの浮動小数点値を格納する単純型を表します。次の表は、float 型の精度と概算範囲を示しています。

デフォルトでは、代入演算子の右側の実数値リテラルは double として扱われます。したがって、float 変数を初期化するには、次の例のように接尾辞 f または F を使用します。

float x = 3.5F; or in your case 0.05F

ソース: https://msdn.microsoft.com/en-us/library/b1e65aza.aspx

2 番目の質問については、z 軸は深さを表します。各フレームでキャプチャされた深度画像は、Kinect ランタイムによってスケルトン データに処理されます。スケルトン データには、深度センサーに表示されている最大 2 人の人間の骨格の 3D 位置データが含まれています。スケルトンの位置と各スケルトン ジョイント (アクティブ トラッキングが有効な場合) は、(x, y, z) 座標として保存されます。深度空間とは異なり、スケルトン空間の座標はメートル単位で表されます。

以下に示すように、x、y、および z 軸は深度センサーのボディ軸です。

スケルトンスペース

これは、Kinect が向いている方向に正の z 軸が伸びるように、Kinect を原点に配置する右手座標系です。正の y 軸は上に伸び、正の x 軸は左に伸びます。

ソース: https://msdn.microsoft.com/en-us/library/hh973078.aspx

最後の質問ですが、0.5F の公差を減らしてみてください。

さらに、Windows Kinect サイト ( https://kinectforwindows.codeplex.com/ ) でいくつかの例を紹介したいと思います 。

于 2016-07-01T16:47:04.697 に答える