5

SDKを使用してアプリケーションを作成しています。この場合、ユーザーは1人だけでロックする必要があるため、他の誰かが来た場合、その人がKinectに近づいても、アプリケーションは追跡した最初のスケルトンを追跡し続けます。

msdnライブラリから、SkeletomStreamClassを使用できることがわかりました。

プロパティ:AppChoosesSkeletons=アプリケーションが追跡するスケルトンを選択するかどうかを決定するブール値を取得または設定します。

メソッド:SkeletonStream.ChooseSkeletons(Int32)=追跡するスケルトンを1つ選択します。構文:public void ChooseSkeletons(int trackingId1)

私はプログラミングがあまり得意ではなく、C#を使用しています。コードのようなものを書き留めようと思いましたが、無効な式を使用していると表示されます。

SkeletonFrame SFrame = e.OpenSkeletonFrame();
if (SFrame == null) return;

Skeleton[] Skeletons = new Skeleton[SFrame.SkeletonArrayLength];
SFrame.CopySkeletonDataTo(Skeletons);

int firstSkeleton = Skeletons[0].TrackingId;
sensor.SkeletonStream.ChooseSkeletons(int firstSkeleton);

if (firstSkeleton == null)
return;

if (SkeletonTrackingState.Tracked == firstSkeleton.TrackingState)
{
//body...

問題はにありますsensor.SkeletonStream.ChooseSkeletons(int firstSkeleton、それは言いint firstSkeleton cannot be usedます。
誰か助けてくれませんか?ありがとう!

4

2 に答える 2

3
sensor.SkeletonStream.ChooseSkeletons(int firstSkeleton);

このラインで何を達成したいですか?

firstSkeleton を int にキャストする場合は、次のように記述します。

sensor.SkeletonStream.ChooseSkeletons((int) firstSkeleton);

キャストしたくなくて、int 変数を methodid に渡すだけの場合は、次のように記述します。

sensor.SkeletonStream.ChooseSkeletons(firstSkeleton);
于 2012-04-18T17:28:07.293 に答える
2

スケルトンをロックすることはできませんが、位置に関係なく、追跡するスケルトンを選択できます。両方の人が Kinect の視野から離れると複雑になります。

trueに設定AppChoosesSkeletonsすると、追跡するユーザーを選択できます。追跡するユーザーを指定するには、SkeletonStream.ChooseSkeletonsメソッドを呼び出して、追跡する 1 つまたは 2 つのスケルトンの追跡 ID を渡します (追跡するスケルトンがない場合はパラメーターを指定しません)。

このようなもの:

private void ChooseSkeleton()
  {
    if (this.kinect != null && this.kinect.SkeletonStream != null)
        {
        if (!this.kinect.SkeletonStream.AppChoosesSkeletons)
        {
        this.kinect.SkeletonStream.AppChoosesSkeletons = true; // Ensure AppChoosesSkeletons is set
        }

        foreach (Skeleton skeleton in this.skeletonData.Where(s => s.TrackingState != SkeletonTrackingState.NotTracked))
        {
        int ID { get.skeleton[1]}//Get ID here
        }

      if (ID = 0)
      {
        this.kinect.SkeletonStream.ChooseSkeletons(ID); // Track this skeleton
      }
    }
  }
于 2014-12-28T15:58:09.717 に答える