gpt4 book ai didi

c# - 使用深度数据 - Kinect

转载 作者:太空狗 更新时间:2023-10-29 17:43:43 25 4
gpt4 key购买 nike

我刚开始通过一些快速入门视频了解 Kinect,并尝试使用代码来处理深度数据。

但是,在处理此深度数据时,我无法理解如何使用移位和用于计算其他内容的各种其他公式来计算距离。

http://channel9.msdn.com/Series/KinectSDKQuickstarts/Working-with-Depth-Data

这些是文档等中解释的 Kinect 特定细节吗?任何帮助将不胜感激。

谢谢

最佳答案

像素深度

当您没有设置 kinect 来检测玩家时,它只是一个简单的字节数组,其中两个字节代表一个深度测量值。

因此,就像在 16 位彩色图像中一样,每 16 位代表一个深度而不是一种颜色。

如果数组用于假设的 2x2 像素深度图像,您可能会看到:[0x12 0x34 0x56 0x78 0x91 0x23 0x45 0x67],它代表以下四个像素:

AB
CD

A = 0x34 << 8 + 0x12
B = 0x78 << 8 + 0x56
C = 0x23 << 8 + 0x91
D = 0x67 << 8 + 0x45

<< 8 只是将该字节移动到 16 位数字的高 8 位。和乘以256是一样的,整16位数字变成0x3412、0x7856、0x2391、0x6745。您可以改为 A = 0x34 * 256 + 0x12。简单来说,就像说我有 329 件元素和 456 千件元素。如果我有那么多项目,我可以将 456 乘以 1,000,然后将其与 329 相加以获得项目总数。 kinect 将整个数字分成两部分,您只需将它们相加即可。我可以将 456 向左“移动”3 个零位,这与乘以 1,000 相同。它将是 456000。因此对于整数 10,移位和乘法是相同的。在计算机中,整数 2 是相同的 - 8 位是 256,因此乘以 256 与左移 8 相同.

这将是您的四像素深度图像 - 每个生成的 16 位数字代表该像素的深度。

玩家深度

当您选择显示玩家数据时,它会变得更加有趣。整个 16 位数字的后三位告诉玩家该数字是其中的一部分。

为简单起见,忽略他们获取剩余13位深度数据的复杂方法,直接照上面的方法,窃取低三位:

A = 0x34 << 8 + 0x12
B = 0x78 << 8 + 0x56
C = 0x23 << 8 + 0x91
D = 0x67 << 8 + 0x45

AP = A % 8
Bp = B % 8
Cp = C % 8
Dp = D % 8

A = A/8
B = B/8
C = C/8
D = D/8

现在像素 A 有玩家 Ap 和深度 A。% 得到除法的余数 - 所以取 A,将其除以 8,余数就是玩家编号。除法的结果是深度,余数是玩家,所以 A 现在包含深度,因为我们通过 A=A/8 摆脱了玩家。

如果你不需要播放器支持,至少在你开发之初,跳过这个,直接使用第一种方法。不过,如果您确实需要玩家支持,这是获得支持的众多方法之一。有更快的方法,但编译器通常会将上述除法和余数(取模)运算转换为更高效的按位逻辑运算,因此您通常无需担心。

关于c# - 使用深度数据 - Kinect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8083783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com