Kinect for Windows SensorとSDK - その2 - ベータ版との違い
さて、調子に乗って続け、ようっ!!
SDKのベータ版時代から、アプリを作っていた皆さんにとって、もっとも気になっているのが「APIどう変わったの?」という点でしょう。
Managed版は、かなり変わっています。…ま、かなり整理されて使いやすくなっているので、早く新しいAPIになじんでくださいね。順にベータの時と比較しながら、説明していきます。
1. 名前空間変わりました!!
ベータ版までは、名前空間が、”Microsoft.Research.Kinect”、だったのが、”Microsoft.Kinect”に変わっています。…正式版になったな…という感じですね。
それに伴い、参照設定のアセンブリ名も変わっているので、ベータ版対応版のアプリを移植する際には、一旦昔のアセンブリの参照を削除して、新しく、Microsoft.Kinectを選択して直してください。
これにより、プログラムの先頭は、
ベータ版 |
|
正式版 |
|
に変更してください。
2. センサーオブジェクト
ご存知?の通り、Kinect for Windows SDKでは、複数のKinectセンサーを一台のPCにつないで操作可能です。ベータ版の時は”Runtime”というかなり無理やりな名前のクラスからセンサーオブジェクトを取り出すようになっていましたが、正式版では、”KinectSensor”という名前のクラスが用意されています。
取り出すコードは、以下の様になります。
ベータ版 |
|
正式版 |
|
3. 各種ストリームの初期化
センサーオブジェクトが取り出せたら、次は各種ストリームの、初期化です。
|
ベータ版までは、ストリームのOpenメソッドをコールして初期化をしていました。正式版では、指定する引数向け列挙子も併せて整理されて、Enable()というメソッドをコールするように変わっています。ベータ版のときに比べてだいぶすっきりしています。
最後にRangeというプロパティを設定しています。これが、40cmという至近距離からのセンスを有効にする為の設定です。このプロパティは、DepthRange.Defaultという値が初期値として入っているので、このプロパティを設定しなければ、逆に今までどおり80cmからのセンスが可能なようになっています。実画像は、ベータまでは、VideoStreamという名前だったのが、ColorStreamという名前に変更になっている点にも留意してください。
4. 計測の開始
後は、kinectSensorのDepthFrameReadyや、SkeletonFrameReady、ColorFrameReadyにイベントハンドラを登録して、Start()メソッドをコールすれば、計測が開始されます。
5. Kinectセンサーの抜き差し
他に、KinectSensor.KinectSensorsプロパティには、StatusChangedイベントが用意されています。このイベントにハンドラを登録しておけば、PCへの新たなKinectセンサー挿入を感知可能です。
以上、このポストはこれにて終了。深度やスケルトン、その他情報の取得の詳細は、後続のポストで。