3

誰かが私を正しい方向に向けるのを手伝ってくれることを望んでいました.

Microsoft Kinect を使用してランプを消す方法を探しています。ランプは、Telldus Tellstick とペアになっている Home Easy リモート ソケット スイッチに接続されています。私は C# を使用してアプリケーションを作成していますが、頭の中に何をしたいのか漠然とした考えがあり、Kinect SDK を使用した後、Kinect の使用方法をよりよく理解できました。

私が知りたいのは、このアプリケーションを作成する最も論理的な方法は何ですか? Kinect を初期化する > Kinect の準備ができたら、スケルトンをスキャンする > スケルトンが検出されたら、ブール値を「true」としてマークする > 値が true の場合、ライトをオンにする。

私はそれが非常に漠然としていることを知っていますが、私はkinectで開発するのが初めてで、全体的にまだC#を学んでいます. どんなに小さなことでも、どんな助けでも大歓迎です!

よろしく、ジョン。

4

1 に答える 1

1

SDK のイベント ドリブン アプローチでは、すべてが空であっても 6 つの骨格構造が返されるため、単純なブール値を設定することはできません。ただし、少しの LINQ と null チェックを使用すると、探しているものが得られます。

手順:

  1. Kinect を初期化します (このアプリの WPFViewers には付属の KinectSensorChooser を使用します) を有効にして、スケルトン ストリームを登録します。
  2. スケルタル イベント チェックで、null スケルトン コレクションを取得していないことを確認します (発生します)。
  3. LINQ を使用して、tracking プロパティが tracked に設定されている最初のスケルトンを取得します。for ループを使用することもできます。LINQ はこれらのタイプの反復に役立つことがわかりました。
  4. LINQ クエリの後のスケルトンが null でない場合は、何かを行います。

これを手早く始めたい場合は、SDK Kinect Explorer をダウンロードするときに含まれるサンプルを利用できます。KinectSensorChooser と一緒にスケルトン ビューアーがあり、ごくわずかなコードで完全に機能するアプリを作成できます。このサンプルに含まれる Skeletal Viewer の詳細については、こちらをご覧ください


このためのコードを提供するかどうかについて、私は少しつまずきました。実際のコードではなく、アクションを実行するために必要なロジックでこれに答える方が良いと思いました...あなたが尋ねたので:)しかし、このコードが必要な場合は、Channel 9のQuickstartsまたは私の本の第4章から入手できます


編集 (KinectExplorer の拡張):

スケルトンが検出されたときに応答するように KinectExplorer を拡張するには、KinectSkeletonViewer.xaml.cs で KinectAllFramesReady 関数を見つけます。この関数の内部には、haveSkeletonData のブール チェックがあります。この if ステートメントは、Kinect の表示可能なフレームにスケルトンが存在する場合に呼び出されます。それで:

   private void KinectAllFramesReady(object sender, AllFramesReadyEventArgs e)
   {
    //Checking for Skeleton
    if (haveSkeletonData)
    {
     //Do Stuff Here
    }
   }
于 2012-04-10T02:22:09.553 に答える