1

几周以来,我一直在研究 Kinect API 并使用新的 SDK (1.5) 进行编程,我基本上是在尝试从 Kinect 传感器流式传输的每个图像中找出眼睛的位置。然后我想获得构成眼睛的像素的 RGB 值。虽然一些变量,如 pFaceModel2DPoint 和 pPts2D(都在 Visualize.cpp 中)声称存储了 colorImage(IFTImage* 类型)中构成面部的所有 86 个点的 x、y 值,但我已经测试并重新测试了这些变量,但无法从这些变量中访问有价值的数据。

此外,即使对应于眼睛的这些 x,y 值对于给定图像是正确的,我也无法找到如何访问所需每个像素的 RGB 值。我知道宏 (FTIMAGEFORMAT_UINT8_B8G8R8A8) 来查找存储像素数据的格式,并且我知道 byte* pixel = colorImage->GetBuffer() 将为来自 Kinect 的当前图像流提供缓冲流,但是做一些事情像像素[rowNum*num_cols_per_row + colNum] = [...] 这样简单的 for 循环不会产生任何有用的东西。

我真的很沮丧和失望,因为我无法让这个工作,但我已经搜索了这么多网站和搜索引擎来解决我附近的问题,但一无所获。我多次使用 OpenCV 和 Kinect 编写了自己的代码,仅使用了 Kinect 本身,以及 SDK 中对 MultiFace 示例的修改。(上面列出的这些变量和函数来自 MultiFace 示例。)任何帮助将不胜感激。谢谢!

更新:Kinect API 不清楚,因此我提出了这个问题,但经过反复试验,我已经解决了这个问题。图像格式实际上是 RGBX(格式化为 BGRX),因此 byte* 中的元素 0-3 对应像素 0,元素 4-7 对应像素 1,等等。非常简单;我刚刚对处理图像流的不同方法感到困惑,因为在同一个头文件中有几个 GetBuffer 类型的调用。希望这对其他人有帮助!

4

0 回答 0