Kinect SDK V1.0が公開されたのでさっそく使ってみた。
まず、ここからSDKをダウンロード。
インストーラーが1つなのでOpenNIに比べてインストールも簡単。
サンプルの”Kinect Explorer”もサクッと動いた。
OpenNIだとなかなかこうはいかない。インストールでトラブル人が多いようだ。
まず、”Kinect Explorer”でSkeletonTrackingを試してみた。
simple-openniでやった時より安定している(ふらつかない)ような気がする。
ZOOM for Xbox 360 を使ってみた。椅子に座ったままでも全身が画面に入りやすくなる。
さて、SDKが使えるようになったので、サンプルのソースを読んでみる。
Kinect SDKはサンプルプログラムの数が少ない。
OpenNIはサンプルプログラムが多かったから、やりたいことがすぐ試せたんだが...
ここを参考にさせていただく。シンプルでわかり易い。
・Kinect for Windows SDK で RGBカメラの画像を表示する(C# + WPF)
まずは、Kinect SDK + C# でDepthの3次元表示をやってみたい。
DirectXは使ったことないから、やはり使い慣れたOpenGLかな。
C# でOpenGLを使うにはOpenTKがよさそうだ。ここの説明がわかり易い。
どうもKinectでいろいろ実験するには、processing + simple-openniが一番簡単な気がする。
余計なことに煩わされずにやりたいことにすぐ到達できる。
いまのところ、Kinectを使ったアプリを配布するならKinect SDKで、自分で作って自分で使うだけならOpenNIの方が楽かな。
Kinect SDK + Processingが使えるようになれば状況が変わるかもしれないが...。
Kinect SDK API Referenceを読む。
Depthとカメラ画像を重ねて3次元表示したいのだが、OpenNIの"depthMapRealWorld()"みたいなAPIはないのかな...
"KinectSensor.MapDepthFrameToColorFrame()"を使えば同様のことが出来そうだ。
試行錯誤の末、Depthを使ったカメラ画像の切り出しがやっと出来た。
Depthとカメラ画像がちゃんと重なっているので指の形も分かる。が...表示が異様に遅い。
これを見ながらKinect SDKでのDepthデータの扱い方を勉強。
今日、一日中試行錯誤でやって来たことは間違っていなかったようだ。
・Working with Depth Data (Channel 9)
SDKのサンプルに付属の"KinectWpfViewers"を使うと、ほとんどコードを書かなくても簡単にDepth表示やSkeleton表示ができることが分かった。
やり方は、ここの動画の最後の3分30秒ぐらいから ...(英語ですが、見てればわかります。)
あぁ~。OpenNI + Processingを使えば半日もかからなかったことが、Kinect SDK + C# だと4日掛かってもまだ先が遠い。
やりたいことにたどり着くまでにマスターしなければならないことが多すぎる!!
"KinectSensor.MapDepthFrameToColorFrame"を使うと表示がカクカクになってしまう。
処理が重いのかな~。
現象が出るのはrgb,depth共に640x480の時。depthが320x240ならOK。
色々調べてみるとデータ取得イベント内での処理が重くて、次のフレームデータ来るまでに終わらないのが原因のようだ。
データ取得イベント内でやっていた表示処理を外へ移すことにする。
さらに、Kinect SDK API Referenceを読む。
Tilt Motorを制御して首を振るときは、1秒に一回ぐらいにしろと書いてある。
Tilt Motorでトラッキングするのは無理か...。サーボモーターを外付けするかな。
やっと C#+OpenGL(OpenTK)の使い方がわかってきた。つぎは、Kinect SDKと組み合わせてDepthを3次元表示してみる。
ついに、Kinect SDK + C# + OpenGL(OpenTK)で、Depthを3次元表示出来るようになった。
動画はこちら。
Kinect SDK + C# + OpenGLで、Depthを3次元表示してみた。
次は、カメラ画像とDepthを3次元表示してみた。
さらに、Skeletonも3次元表示できるようにした。
動画はこちら。
Kinect SDK v 1.0 + C# + OpenGL(OpenTK)で、カメラ画像、Depth、スケルトンを3次元表示してみた。
―以上―
関連するリンク
・DOWNLOAD KINECT FOR WINDOWS SDK