2012-04-06 5 views
3

誰かが私を正しい方向に向けるのを助けてくれることを望んでいました。Microsoft Kinect + Telldus Tellstick

Microsoft Kinectを使用してランプを消す方法を探しています。ランプは、Telldus TellstickとペアになっているHome Easyリモートソケットスイッチに接続されています。私はC#を使用してアプリケーションを書いていますが、今私は何をしたいのか分かりませんが、Kinect SDKを使用した後はKinectの使い方をよく理解しています。

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

私はそれが非常に曖昧であることを知っていますが、私はkinectと全体的に私はまだC#を学んでいると開発するのは初めてです。どんなに小さくても大歓迎です!

よろしく、 ジョン。

+0

初期のKinect> Kinectの準備ができて、次にスケルトンをスキャンする場合>スケルトンが検出されたときに、その複数の論理的な方法 –

+0

おかげMekici「真」としてブール値をマークし、私は私が持っているだろうかどうかを知るために興味がありました骨格トラッキングからのデータを収集するか、それ以上の問題なしにブール値コマンドを指定することはできますか? –

+0

Infact骨格の追跡は必要ありません!なぜスケルトン処理を使用する必要がありますか?あなたのアプローチは、動き検出である単純な画像処理ですか? –

答えて

1

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

ステップ:

  1. 初期のKinect(私はこのアプリのWPFViewersのために含まKinectSensorChooserを使用します)を有効にし、骨格ストリームに登録します。
  2. nullスケルトンコレクションを取得していないことを確認するスケルトンイベントで確認します(発生する)
  3. LINQを使用して、追跡プロパティを追跡対象に設定した最初のスケルトンを取得します。 forループを使うこともできますが、LINQがこれらのタイプの繰り返しに役立つことがわかります。
  4. LINQクエリの後のスケルトンがnullでない場合は、何かをします。

SDK Kinect Explorerをダウンロードする際に含まれているサンプルを活用することができます。 KinectSensorChooserと一緒に骨格ビューアがあります。これは非常に小さなコードで完全に機能するアプリケーションを持つことができます。 は骨格ビューアについての詳細を読んで、このサンプルhere


に含まれて私はこれかどうかのコードを提供するために、天気をして少しつまずきました。私は実際のコードではなく、アクションを実行するために必要なロジックでこれに答えるのが良いと思っていました。あなたが質問してから:)しかし、もしあなたがこれを得るにはChannel 9's Quickstartsまたはmy book第4章

(KinectExplorer拡張)

編集:骨格がちょうどKinectSkeletonViewer.xaml.cs関数KinectAllFramesReadyを見つける検出されたときに応答するKinectExplorerを拡張するために

。この関数の中にhaveSkeletonDataのブールチェックがあります。このif文は、Kinectの表示可能なフレームにスケルトンが存在するときに呼び出されます。 はそう:

private void KinectAllFramesReady(object sender, AllFramesReadyEventArgs e) 
    { 
    //Checking for Skeleton 
    if (haveSkeletonData) 
    { 
    //Do Stuff Here 
    } 
    } 
+0

こんにちはデイビッド、あなたの応答をありがとう。私はちょうど副メモとして、あなたの年の初めにあなたの本を購入する予定でした!しかし、開始日はちょっと遅かったです。 私は、カラーストリームのWPFビューアを使用していて、スケルトンスキーム用に登録されています。私はC#の知識がまだ非常に限られているので、Skeletal SDKの例は理解できません。クイックスタートガイドは役に立ちますが、私が探しているものを実際にはターゲットにしていません。適切な方向に私を向けるためのコードを提供することは可能でしょうか?それは徹底する必要はありません... –

+1

V1のリリースでAPIの変更の膨大な量のため、私の本は戻って設定されています。誰かが最新のバージョンを使うことができるようにしたいと思っていました... KinectExplorerを見てどこにコードを挿入するかを指摘するために私の答えを編集しました。私はそれが助けて欲しい – davidbates

+0

また、 'int'sはうまくいくようです。 'int PersonDetected = 0;スケルトンスケルトン; if(skeleton.TrackingState == SkeletonTrackingState.Tracked){PersonDetected = 1; } ' –

関連する問題