v1.7を入れたままでしたがv1.8をインストールすると完全置き換えになります。なお、Kinect for Windows Speech Recognitionはv11.0のままなのでインスト0る済であれば再度インストールする必要はありません。
背景合成のサンプルが新しくなっていました。
従来の方法
何か今まで深度データが人かどうかのフラグで判定していたのですが、v1.8からはBackgroundRemovedColorStreamでデータとれるようです。
従来の方法と比べて境界がソフトフォーカス気味になっています。
どのようなコードで実現できるかは、次のコード例をみてください。機械的にかけるので非常に簡単ですね。
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を起動して
「Open sample page in default browser」をクリックすると背景合成サンプルが動き、IE上で背景が置き換わった映像がリアルタイムに生成されます。
ブラウザ側ではKinect-1.8.0.jsというJavaScriptがWebServerとの間でJSONでデータのやり取りをおこなっています。