今回は、連載4〜7回目のレビューになります。
本格的にプログラミングな感じになっていきますが、
連載の通りに進めていけば問題ないでしょう。。。(たぶん)
それでは、各回に分けてレビューしていきます。
■━…━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━…━■
【1】 連載 第4回目レビュー
「やってみよう!Kinectアプリ開発 - 第4回 骨格情報の利用」
■━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━■
プログラムでやろうとしていることは、
表示されいている頭の骨格に別の画像を貼り付つける「マスク画像」実現しようとしています。
これはありがたい。
出来上がった画像を表示するのはいいんですが、顔を晒すのもイヤですからね。。。
(部屋の汚さは隠せないけど)
使用する画像はとりあえず作りました。
今回は連載ページが3ページもあるけど画像が多いのでそんなには大変じゃないです。
完成!
まぁ〜いいかな。
でもこのままでは体を傾けてもまっすぐ向いてるので違和感が・・・
3ページ目のプログラムを追記します。
より自然なマスク画像になったと思います。
これだけ見ると、画像編集してアイコン画像くっつけだだけな感じもしますが(汗
ちゃんとプログラミングしてるんだからね!
しかしながら、
傾けすぎるとその角度についてこれなくなるみたいなので、ある程度で止めないといけないという欠点があったります。
(2012.10.31 追記)
大雑把ですが、ソース修正したほうがよさそうです。
= kinect.CoordinateMapper.MapSkeletonPointToColorPoint(headPos, rgbFormat);
上記部分を下記に。
= kinect.CoordinateMapper.MapSkeletonPointToColorPoint(headPos, rgbFormat);
SDK更新したら使用するなと言われたので~
■━…━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━…━■
【2】 連載 第5回目レビュー
「やってみよう!Kinectアプリ開発 - 第5回 深度情報の利用」
■━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━■
前回までのプログラムだと、
近くても遠くてもマスク画像が同じ大きさでした。
これだと違和感があるので、深度情報を追加しようというのが今回の連載です。
連載だと分かり難かったですが、
「fillBitmap」メソッドに少しプログラムを追加するだけでOKでした。
そして完成したのが以下の画像
上の画像を見比べていただくと分かりますが、明らかに小さくなりました。
これでマスク画像もより自然に近い形になった気がします。
それから注意点なんかも解説されてます。
kinectでは見える範囲を画面に表示させていますが、
実は画面全部使えるわけではないようです。
画面の端だと「深度情報が取得できない」らしぃ。
それを証明するのが下の画像
青部分が深度情報を取得できる部分みたいです。
しかしここで1つ問題が。。。
エクセプション発生したよおおおお!?
どうやら人物を描画せずにいるとエクセプションがでるようなんですが、
いまいち対処法も分からず。
まっまぁ、とりあえず動くからいいかなと放置。。。
なんか分かれば追記させていただきます。
ついでに、上記エラーの他にも、OutOfMemoryも発生した・・・
こいつは・・・他の言語でも良く見るようなエラーですが、つまりはメモリー不足。
メモリーの推移を見ていると、
どうやらマスク画像を描画していない時にメモリが使われているらしぃ。
ループ処理が回りまくっているのかなぁ?
ちなみに、搭載メモリは16GBありますが、エラーが出るのは4GBちょっとの時。
つまり、ソフトに割り当てられているメモリの上限って事なのでメモリ増やしても変わりません。
この辺は今後の課題だなぁ~。
2012.08.12 追記
mkamaさんのコメントでOutOfMemoryのエラーが無くなりました!
こちらの一番下
ガベージコレクションを実行しているようです。
※ガベージコレクションとは
使わなくなったメモリを解放する機能の事。
人を認識しないと、未使用のメモリを確保しまくってエラーが出ていたようです。
それを毎回、解放してあげてるってわけですね。
ってことは・・・そもそも未使用のメモリ確保を発生させないようにするのが、
本当の意味でのバグ解消なのかもしれませんが・・・
でもとりあえずエラー発生しなくなって良かったです。
■━…━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━…━■
【3】 連載 第6回目レビュー
「やってみよう!Kinectアプリ開発 - 第6回 音源の方向の取得」
■━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━■
今回は、とうとう音を取得しよう!
という回です。
だんだんと色々な事ができるようになってきます。
kinectでは音を拾うだけでなく、
どこで音が鳴っているのかも分かるようになっているようです。
さらに録音もできるので、本当になんでもできちゃうな!
今回は、音の方向を取得して、漫画のように吹き出しをつけちゃおうという事です。
使用する吹き出しは以下。
何に苦労したかって?
この吹き出し画像作るのに四苦八苦。
透過GIF作れなくて困ったよ><。
最終的にはJTrimってソフトで背景だけ透過させることができたので完成したけど・・・
もういちいち使用する画像を作るのが大変です(汗
そんなことは良いとして、
しゃべると以下みたいに出現します。
ちょっと吹き出しっぽくないのはご愛嬌。
でもやっぱりすごい点は、遠くで音を鳴らしてもそこに吹き出しはでないです。
ちゃんと人物がいる場所に吹き出しがでるようになってます。
■━…━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━…━■
【3】 連載 第7回目レビュー
「やってみよう!Kinectアプリ開発 - 第7回 音声認識」
■━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━■
前回の機能に追加する形になります。
あらかじめ登録しておいた単語を声にだすと、それが吹き出しに表示されます。
ここで肝心なのは、予め用意してある文字じゃないとダメという点です。
まだ基本編なので仕方がない。
この機能を使うにはあらかじめ用意しないといけないものがあります。
「Microsoft Speech Platform Software Development Kit (Version 11)」
「Kinect for Windows Language Packs v1.5.0 」
※URLリンク貼り替え。またURL替わるかな? (2012.10.31)
音声認識には必要なものになるので必需です。
何も面白みがなくてごめんなさいといいたいところですが、
「キネクト」
って叫ぶとキネクトって表示してくれます。
これはあらかじめ単語を準備しないといけないため、
登録した単語以外をしゃべっても反応してくれません。
なので、
あいうえお を全部登録して、
1秒以内に発言したら前回発言した言葉と合わせて表示する。
・・・なんて妄想したけど妄想で止まり中・・・
実現できそうなら追記します。
■━…━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━…━■
【4】 最後に
■━…━…━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…━…━■
第7回目の連載で基本編が終了です。
正直、コーダー化してます。
プログラミングしていない。
どういうことかというと、言われた通り言われたように記述しているだけ。
こんなのはプログラミングじゃないんです><。
まだなんとか動いているので良いのですが、
ちょっと自分で考えてやってご覧?ってなった時に先に進まない気がします。
ここまでで分からない点があったら復習しておかないと次に進めないかも?
次回からは応用編なので、さらなる問題が待ち構えてる・・・はず。
それぞれの部品を使う際の初期処理や、メソッドの使い方を把握していって、
真似事じゃない自分なりのプログラムを早く作りたいところです。
一応連載的には折り返し地点!
これから難易度は高くなるだろうけどガンバロー!
★今回のソース
きっちょむさん
2012/07/31
内容が読めません><;;
kazgbさん
2012/07/31
晒したくないものをしょうがなく晒してしまった気分ですorz
視力検査の紙は、目を鍛えようと思ってプリントアウトして貼ったんですが、
結局放置という罠。
動きは・・・シュール!?
mkamaさん
2012/08/11
OutOfMemory 解決方法を見つけたので、試していただけませんか?
kazgbさん
2012/08/12
実は日記見て試そうと思ってました><b
ちょっと今PC解体しちゃっているので、後で試させていただきます~
日記にコメントさせていただきますね。
ありがとうございます。