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とよく似ています。
実行結果
いくつかの環境で動かしてみました。
Xbox One Kinect
Color,IR,Long IR,Depthが出てきます。
Intel RealSense F200
ColorとIRのみ出てきます。
Intel RealSense R200
Windows Hello未対応デバイスです。IR(Left-Right)、DepthともにColorのところに出てきます。
Surface Pro 4
IRのみ出てきます。ColorはWebカメラですね。
考察
考察になりますが、以上からWindows HelloはPerception APIでIRと認識される必要があるようです。
また、Surface Pro 4(たぶんBookも同じ)に乗っているWindows Helloの顔認証デバイスは、RealSenseとは別のIRになっています。