使用Kinect SDK的身体点云

Lia*_*roy 5 c# wpf point-clouds kinect

我正在使用SDK创建一个程序,当检测到用户时,该程序会为它们绘制一个框架供他们遵循.我最近看到一个游戏在我的Xbox,Nike + Kinect上做广告,并看到它如何显示该角色的副本,如:

http://www.swaggerseek.com/wp-content/uploads/2012/06/fcb69__xboxkinect1.jpg

要么

http://www.swaggerseek.com/wp-content/uploads/2012/06/fcb69__xboxkinect.jpg

我是否可以创建仅检测到的人(不是任何背景)的点云表示?提前致谢!


编辑

使用这个网站,我可以创建点云,但仍然无法在人体周围进行裁剪.

Edg*_*arT 6

你可以对点进行非常简单的三角测量.查看本教程:

http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series1/Terrain_basics.php

检查结果:

在此输入图像描述


dav*_*tes 5

看起来它们看起来并不是一个完整的点云,而是一个蓝色阴影强度图.这可以通过Kinect for Windows sdk的深度图像来完成.你要找的是球员指数.这是深度图像的每个像素中提供的位.为了获得播放器索引位,您还必须在初始化代码中启用骨架流.

所以我就是这样做的.我修改的Kinect的Windows SDK的一个快速入门发现这里加载它并进行以下修改:

//Change image type to BGRA32
image1.Source = 
                BitmapSource.Create(depthFrame.Width, depthFrame.Height, 
                96, 96, PixelFormats.Bgra32, null, pixels, stride); 

        //hardcoded locations to Blue, Green, Red, Alpha (BGRA) index positions       
        const int BlueIndex = 0;
        const int GreenIndex = 1;
        const int RedIndex = 2;
        const int AlphaIndex = 3;

//get player and depth at pixel
int player = rawDepthData[depthIndex] & DepthImageFrame.PlayerIndexBitmask;
int depth = rawDepthData[depthIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;

//check each pixel for player, if player is blue intensity.

            if (player > 0)
            {
                pixels[colorIndex + BlueIndex] = 255;
                pixels[colorIndex + GreenIndex] = intensity;
                pixels[colorIndex + RedIndex] = intensity;
                pixels[colorIndex + AlphaIndex] = 100;

            }
            else
            {
                //if not player make black and transparent
                pixels[colorIndex + BlueIndex] = 000;
                pixels[colorIndex + GreenIndex] = 000;
                pixels[colorIndex + RedIndex] = 000;
                pixels[colorIndex + AlphaIndex] = 0;
            }
Run Code Online (Sandbox Code Playgroud)

我喜欢用这个例子测试颜色,因为它仍然为你提供右侧的深度查看器.我在下面附上了这个效果的图像:

在此输入图像描述

左边的图像是具有略微颜色的像素级强度数据的强度图.

希望能帮助大卫贝茨

  • 在考虑了像素级效果之后.您可以为每个其他像素增加强度,以便您可以获得样本图像上显示的闪光效果.只是在说 :) (2认同)