はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Kinect for Windows SDK v1.8をインストールしてみた

image

v1.7を入れたままでしたがv1.8をインストールすると完全置き換えになります。なお、Kinect for Windows Speech Recognitionはv11.0のままなのでインスト0る済であれば再度インストールする必要はありません。

 

背景合成のサンプルが新しくなっていました。

従来の方法

image

 

何か今まで深度データが人かどうかのフラグで判定していたのですが、v1.8からはBackgroundRemovedColorStreamでデータとれるようです。

image

従来の方法と比べて境界がソフトフォーカス気味になっています。

どのようなコードで実現できるかは、次のコード例をみてください。機械的にかけるので非常に簡単ですね。

VB.NET
Using depthFrame = e.OpenDepthImageFrame()
    If (depthFrame IsNot Null) Then
        this.backgroundRemovedColorStream.ProcessDepth(depthFrame.GetRawPixelData(), depthFrame.Timestamp);
    End If
End Using
 
Using colorFrame = e.OpenColorImageFrame()
    If (colorFrame IsNot Null) Then
        this.backgroundRemovedColorStream.ProcessColor(colorFrame.GetRawPixelData(), colorFrame.Timestamp);
    End If
End Using 
Using skeletonFrame = e.OpenSkeletonFrame()
    If (skeletonFrame IsNot Null) Then
        skeletonFrame.CopySkeletonDataTo(this.skeletons);
        this.backgroundRemovedColorStream.ProcessSkeleton(this.skeletons, skeletonFrame.Timestamp);
    End If
End Using 
C#
using (var depthFrame = e.OpenDepthImageFrame())
{
    if (null != depthFrame)
    {
        this.backgroundRemovedColorStream.ProcessDepth(depthFrame.GetRawPixelData(), depthFrame.Timestamp);
    }
}
 
using (var colorFrame = e.OpenColorImageFrame())
{
    if (null != colorFrame)
    {
        this.backgroundRemovedColorStream.ProcessColor(colorFrame.GetRawPixelData(), colorFrame.Timestamp);
    }
}
 
using (var skeletonFrame = e.OpenSkeletonFrame())
{
    if (null != skeletonFrame)
    {
        skeletonFrame.CopySkeletonDataTo(this.skeletons);
        this.backgroundRemovedColorStream.ProcessSkeleton(this.skeletons, skeletonFrame.Timestamp);
    }
}
Microsoft.Samples.Kinect.Webserver

最近のNUIの流行りのWebServerもv1.8には実装されています。

しかもソース提供なのでKinectに限らず何かローカルリソース使うときとかに改造するベースとして便利かもしれませんね。

WPFベースのWebserver Basicsを起動して

image

「Open sample page in default browser」をクリックすると背景合成サンプルが動き、IE上で背景が置き換わった映像がリアルタイムに生成されます。

ブラウザ側ではKinect-1.8.0.jsというJavaScriptがWebServerとの間でJSONでデータのやり取りをおこなっています。

image