レビューメディア「ジグソー」

理解度が上がっていくのが楽しい 【完了】

【【【Kinect for Windows センサー L6M-00005】】】
【【【やってみよう!kinectアプリ開発連載1~3回 受講票】】】
【【【やってみよう!kinectアプリ開発連載4~7回 受講票】】】
【【【やってみよう!kinectアプリ開発連載8~11回 受講票】】】
【【【やってみよう!kinectアプリ開発連載12.13回 受講票】】】

*----------*--------*-------*------*-----*----*---*--*-*
【【【[やってみよう!Kinectアプリ開発 - 第8回 初期化・終了処理】】】
*----------*--------*-------*------*-----*----*---*--*-*
リンク先にしたがってソースコードを入力します。

今回は、実際のアプリケーションを開発するうえで必要となる、
初期化・終了処理などのトピックを紹介します。
とのこと

一つのソフトを複数プロジェクトで開発することが初めてなので、
なんか新鮮ですごいワクワクしています。



【初期化・終了処理】  ~講座から引用 ここから~
これまでの連載では「Kinectが1つだけ接続され利用可能なこと」を前提にしていました。
実際のアプリケーションを開発する上ではこのような仮定は置けませんので、
エラー処理も含めたもう少し正しい初期化処理を考えてみましょう。

まず、起動時に考えないといけないエラーはどのようなものがあるのでしょうか?
軽く列挙してみましょう。

・Kinectがない場合
・Kinectに電源がつながっていない場合
・Kinectが正しく認識できない場合
・他のアプリケーションが使用中の場合

さらに実際のアプリケーションでは、以下のケースも考えないといけません。

・実行中にKinectが抜かれてしまった場合
・実行を開始してからKinectを接続した場合
ここでは、これらのケースを扱う方法を紹介します。


アプリケーションの修正
今回のアプリケーションの修正は以下を行います。

・Kinectセンサー接続時にKinectの初期化処理を行う
・Kinectセンサー解除時にKinectの終了処理を行う
・画面にKinectセンサーの状態をテキストで表示する
 以降で、これら実現するための修正を説明します。


【状態表示用のTextBlockを追加】  ~講座から引用 ここまで~

ここで躓きました。
追加は解るのですが、どれに追加するの?
としばし悩んでいたら、画面デザインが写っていたのと、
第8回_追加予定場所 青枠がヒント
第8回_追加予定場所 青枠がヒント

の部分と思われるものも写っていました。


第8回_追加場所 青枠がヒント
第8回_追加場所 青枠がヒント

そこで見切り発車ですが見たら同じ画面だったので、作業開始です。

画面全体のサイズ変更の指示もないため、画面内にテキストブロックを追加すると推測。



ステータスを画面内に表示するのですが、黒文字では見づらいので
フォントサイズ・スタイル・カラーを変更してみました。
第8回結果_接続状態
第8回結果_接続状態



【チルトコントロール】
最後にKinectセンサーの上下方向の角度の取得・変更を紹介します。
Kinect for Windows SDKでは、KinectSensorオブジェクトの
ElevationAngleプロパティを参照・編集することで、角度の取得・変更ができます。

なおSDKのドキュメントによると「Kinectセンサーのモーターは継続した操作を想定していないの
で、モーターの操作をできるだけ少なくすること」と注意書きがありますので注意しましょう。
(目安としては、「1秒間に操作は1回まで」、
また「15回操作した後は最低20秒間をあけること」とあります)

とのこと、実験してみました。


キネクトの電源onでカメラを水平化、電源offで下方化を実施しています。


*----------*--------*-------*------*-----*----*---*--*-*
【【【[やってみよう!Kinectアプリ開発 - 第9回 ポーズ認識】】】
*----------*--------*-------*------*-----*----*---*--*-*
リンク先にしたがってソースコードを入力します。
リンク先にしたがってソースコード 別ポーズ追加版を入力します。

規定のポーズをしたらマスク画像のサイズが大きくなるものに改造することになります。
サンプルは2倍となってますが、過去の修正をすべて反映してます。
奥行の差の倍率と相殺されることがありそうなので、
3倍の大きさにすることにしました。

そもそもポーズとジェスチャーの違いってなんだろう?
講座の中でも説明がありましたが、
  ポーズ=静止した状態の様々な姿勢
  ジェスチャー=動きの中でいくつかのポーズを組み合わせた動作
 と切り分けての開発を進めます。


今回はポーズなので
関節の位置(なんとなく解ったフリができるレベル)と
腕・手首の方向(全く理解出来てません)の組み合わせでポーズを判定します。


第9回結果_右手を右上に
第9回結果_右手を右上に



自作アプリの完成公開が必須なので、その前提部分となる各方向の指示判定の追加実験をココでこなします。

第9回結果_左手を左上に
第9回結果_左手を左上に

第9回結果_両手を斜め上に
第9回結果_両手を斜め上に


またデバッグ情報の表示をさせて、状態遷移の確認や、ポーズ認識の確認をしてみます。

ってか、他のシステム開発では毎回実施しているのに、
今回のキネクト開発では、今まで利用していなかったのが不思議です。

Console.WriteLine("表示内容"); でできるとのこと
※コンソール用のコマンドでした。 テキストブロックを追加してそこに表示しました。

ポーズ判定や、状態遷移の際に内容を書き換えるようにして
確認できるようにしてみます。

追加分のソース公開は『未』です

*----------*--------*-------*------*-----*----*---*--*-*
【【【[やってみよう!Kinectアプリ開発 - 第10回 ジェスチャー認識】】】
*----------*--------*-------*------*-----*----*---*--*-*
リンク先にしたがってソースコードを入力します。

腕を回転させるジェスチャーで顔のマスクを巨大化させる予定

とのこと


第10回結果
第10回結果


自作アプリにジェスチャーを入れる余裕が無いのと、
用途がまだ見つけられないため、講座修練のみとしています。


*----------*--------*-------*------*-----*----*---*--*-*
【【【[やってみよう!Kinectアプリ開発 - 第11回 継続的なジェスチャー認識】】】
*----------*--------*-------*------*-----*----*---*--*-*

継続的なジェスチャー認識を利用したアプリケーション例として、
手を使わずに首を傾けることでマウスを動かすアプリケーションを作ってみます。
利用イメージは、お菓子を食べたり、他のことをしながらウェブブラウジングできるようにということで、
名前は「ものぐさマウス」にしましょう。
もしかしたら、その他にもキーボードを打ちながらマウスカーソルを動かすといった応用方法も考えられるかも知れませんね。

って前提で進めるようです。

しかも復習って意味も含めて最初からです。※ソースの流用無し
ソースが準備されているので、ミスタイプでの動作しないなんてエラーは無くなりましたネ^^;;


頭を見つけていない状態
頭を見つけていない状態

頭をトラッキングした状態
頭をトラッキングした状態

マウスポインタまではキャプチャできませんでした。

どのようにカメラがとらえているのか、カメラonモードも搭載して、
ボタンかチェックボックスで切り替えられるようにしてみたい。
また、アングル変更のスライダーコントロールも追加してみたい。

が、それは後々の課題です。

自作アプリにジェスチャーを入れる余裕が無いのと、
用途がまだ見つけられないため、講座修練のみとしています。

コメント (0)

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ20MB)

    画像を選択してください

    ファイルサイズが20MBを超えています

    別の画像を追加

    ほかのユーザーのレビュー

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから