从Kinect SDK获取录制视频的深度(mm)

时间:2016-02-07 08:49:38

标签: c++ kinect

我正在使用Kinect录制的视频和c ++语言作为我的项目。我试图获得一个点的真实世界坐标(真实深度)。但我不知道,如果Kinect SDK中有一个功能用于此目的。所以我改掉了这个公式:

BYTE b = 255 - static_cast (256  realDepth / 0x0FFF)

得到这个:

realDepth = (255-b) * 0x0FFF / 256

我不知道我所做的是否正确。你有什么建议?

1 个答案:

答案 0 :(得分:1)

看过this video之后,我认为你应该按照以下步骤进行:

  • 白色像素是可能的最远距离,(对于Kinect SDK 1.x不在近模式,即默认模式)等于4米;
  • 黑色像素可以是未知值,也可以是最接近的可能值,(对于默认模式下的Kinect SDK 1.x)等于0.8米。

所以这意味着,如果我已经正确猜到那些视频是以默认模式录制的,并且假设你转换了灰度图像中的每一帧(每个像素值的范围从0到255),你应该使用以下式:

  

realDepth(以米为单位)=(3.2 * grayValue / 255)+ 0.8

这样,如果grayValue等于0(黑色),则realDepth为0.8米。如果grayValue等于255(白色),则realDepth为4米。

如果你希望realDepth以毫米为单位,只需将它除以1000。

另请注意,某些黑色像素也可能表示未知值。因此,如果realDepth等于0.8,则无法确定这是正确的值,还是实际上是未知的值。