ホーム > KinectV2
Kinect V2
Kinectを取得する
Kinect V1では複数台のKinectを1台のマシーン(最大Kinect6台まで)接続できましたが
Kinect V2では1台しか接続できないようです。
そのため、GetDefault();で取得します。
// KinectSensorを取得する。 Microsoft.Kinect.KinectSensor sensor = Microsoft.Kinect.KinectSensor.GetDefault();
開始(Open)とKinectの抜き差し(Available)
KinectV2のKinectSensorのプロパティにはIsOpenとIsAvailableがあります。
AvailableはOpenされてなければ取得する(trueになる)ができません。
Open
// Kinect Sensorを取得する。 Microsoft.Kinect.KinectSensor sensor = Microsoft.Kinect.KinectSensor.GetDefault(); // Kinect SensorがOpenでないことを確認する。 if(!sensor.IsOpen) { // Kinectを開始します。 sensor.Open(); }
Available
KinectSensorのOpenメソッドが既に呼ばれており、
Kinectが接続されてフレームが受信できているときに
AvailableがTrueになります。
また、Kinectが抜かれた場合やKinectからフレームを受信できない場合は
AvailableがFalseになります。
KinectがOpenされている状態でUSB接続の抜き差しは、IsAvailableChanged イベントで確認できます。
※ KinectSensorが接続されているのにもかかわらず、利用できない場合は
サービスのKinectMonitorなどが停止していないか確認してください。
// Kinect Sensorを取得する。 Microsoft.Kinect.KinectSensor sensor = Microsoft.Kinect.KinectSensor.GetDefault(); // Kinect SensorがOpenでないことを確認する。 if(!sensor.IsOpen) { // Kinectを開始します。 sensor.Open(); // Kinectの接続イベントに応じて内部で処理する。 sensor.IsAvailableChanged += (sender, evt) => { if(sensor.IsAvailable) { // Kinectが接続されているときの処理 } else { // Kinectが抜かれている場合の処理 } }; }
Kinectを停止する
KinectSensorがOpenされている場合、Close処理で適切に停止させます。
// Kinect Sensorを取得する。 Microsoft.Kinect.KinectSensor sensor = Microsoft.Kinect.KinectSensor.GetDefault(); // Kinect SensorがOpenでないことを確認する。 if(!sensor.IsOpen) { sensor.Close(); }
ここまでのサンプル
Kinectの接続状態を表示するサンプルです。
http://wiki.fedorax.info/Project/KinectV2.Sample1.zip
Kinect V1との差異
開始と終了処理について
Kinect V1では、KinectSensorを取得し、KinectSensor.Statusのプロパティから接続状態を確認して、
Startさせる必要がありました。
Kinect V2では、KinectSensorの処理はサービス化され、ユーザアプリとKinectが分離されているため、
事前に接続状態の確認等が不要になっています。
また、開始と終了処理もKinect V1のStart / Stop からKinect V2ではOpen / Closeに変更されています。
このページのURL: