読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

Kinect Service を使ってみる(3) Windows Phoneをクライアントにする

Kinect


続いて、Windows Phoneをクライアントにしてみましょう。
サンプル内にxapファイルがあり、そのままでも使えるようですが、自分がxapファイルからの実行方法を知らないので、お手軽にソースから起動します。ソースからならシミュレーターでもできるのではないでしょうか(未確認)。
前提として、Windows Phoneのビルドおよび実行環境は作成済みとします。

動作手順

ソースファイルのZIPを、サイトよりダウンロードします。今の時点での最新は、kinectservice-88601.zip のようです


解凍したフォルダ(Coding4Fun.Kinect.KinectService)にあるCoding4Fun.Kinect.KinectService.slnで、Visual Studioを起動します。環境によっては、ロードできないプロジェクトがあるかもしれませんが、Windows Phoneのプロジェクトがロードできていれば大丈夫だと思います。Windows Phoneは次の3つです。

  • Coding4Fun.Kinect.KinectService.Common (Phone)
  • Coding4Fun.Kinect.KinectService.PhoneClient
  • Coding4Fun.Kinect.KinectService.Samples.PhoneSample


実行はCoding4Fun.Kinect.KinectService.Samples.PhoneSampleをスタートプロジェクトにします。実行環境はシミュレーターでも、実機でもお好きな方で(ぼくは実機でしか動作させてません)
アプリケーションをして、WPFの時と同じようにホストのIPアドレスを入力しColorのStartを押すと、Kinectの画像データがWindows Phoneに配信されます。


たぶん、もっさり遅延してるかと思います。データ量、処理速度などあると思います。ホストのアプリケーションに、スケール(拡大・縮小)のパラメーターがあるので、それをちょっといじってみます。
ColorListenerのコンストラクタの最後の引数に0.2を入れます。これがスケールの値で、元画像の20%に縮小します。

_videoListener = new ColorListener(_kinect, VideoPort, ImageFormat.Jpeg, 0.2);
//_videoListener = new ColorListener(_kinect, VideoPort, ImageFormat.Jpeg);
_videoListener.Start();

これで、コンソールのホストをビルド、実行し、Windows Phoneのアプリケーションから接続すると、軽快に動作するのではないでしょうか。
参考までに、手元の環境でやってみた動画を載せておきます。これくらいなら使えるレベルではないかなぁと思います。