ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

Windows.Devices.Perception API(Windows Helloまわり?)を使う その1・デバイスの列挙

Xbox One KinectでのWindows Helloのニュースとともに、Windows.Devices.Perception API(Windows HelloまわりのAPI)についてのサンプルコードも教えてもらいました。

このAPI自体はだいぶ前から入ってたのですが、使い方がわからず放置していました^^;

「Perception」は「知覚」と訳されるそうで、おそらくKinectやCortana、HoloLendsあたりの従来NUIと言われていたような部類の総称かと思われます。

正直なところ、APIの位置づけ、機能について把握していませんが、やってみた感じということで。

上記サイトのサンプルでは、Perceptionで利用できるデバイスの一覧と、ストリーム(画像)表示ができるようになっています。ここでは初めにデバイスの一覧を取得してみます。

 コードはこちらにあります。なお、この機能を使うためにはUWPプロジェクトで作成、マニフェストで「Webカメラ」を有効にします。

コードの概要

今回のキモは下記のコードです。Perception APIではColor、Depth、IR(Infrared)のフレーム(データ)が取れるようで、それぞれPerceptionColorFrameSource、PerceptionDepthFrameSource、PerceptionInfraredFrameSourceとなっています。この次にFrameSourceからフレーム(データ)をとってみてわかるのですが、Kinect for Windows SDK v2とよく似ています。

gist.github.com

実行結果

いくつかの環境で動かしてみました。

Xbox One Kinect

Color,IR,Long IR,Depthが出てきます。

f:id:kaorun55:20151207025756p:plain

 

Intel RealSense F200

ColorとIRのみ出てきます。

f:id:kaorun55:20151207025803p:plain

 

Intel RealSense R200

Windows Hello未対応デバイスです。IR(Left-Right)、DepthともにColorのところに出てきます。

f:id:kaorun55:20151207030119p:plain

 

Surface Pro 4

IRのみ出てきます。ColorはWebカメラですね。

f:id:kaorun55:20151207025809p:plain

考察

考察になりますが、以上からWindows HelloはPerception APIでIRと認識される必要があるようです。

また、Surface Pro 4(たぶんBookも同じ)に乗っているWindows Helloの顔認証デバイスは、RealSenseとは別のIRになっています。