Kinect采集的数据源之一:Depth

Kinect最有用的数据,Depth--深度数据、景深数据,其核心芯片来源参见文章《可以WPF编程的玩具:Xbox 360 Kinect–芯片》。 Depth数据提供了80mm~4m范围的深度数据(Near模式下,范围为40mm~4m),同时也提供了PlayerIndex(但在实验中,发现PlayerIndex不稳定,且渲染出人性轮廓和周边物体区分开不太清晰).

使用Depth数据,类似Color数据,也仅需三步:

步骤一:初始化Kinect

步骤二:配置Depth参数DepthImageFormat

步骤三:响应回调函数,处理DepthImageFrame数据

返回的Depth数据,实质上是一堆short[],其中每个short类型代表一个深度数据:

int player = srcData[i] & DepthImageFrame.PlayerIndexBitmask;
int realDepth = srcData[i] >> DepthImageFrame.PlayerIndexBitmaskWidth;

 

PlayerIndexBitmask是常量7,PlayerIndexBitmaskWidth是常量3.即后三位为PlayerID,前面13为为毫米的深度数据。

雷区:

1 PlayIndex会变化:当你走出FOV区域后,再次走进来,这个会变化。

2 要启用Depth数据,需要开通SkeletonStream.Enable。

 

Kinect的应用中,用到Depth数据的很多,约有20%吧! 其中测量身高是比较有趣的一个。 且,骨骼数据来自Depth数据。 有一些受限的条件是需要大于2.3米才可完整的展现一个人在屏幕中,故屏幕要大些才可看到清晰的图像。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!