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

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

我真的很沮丧和失望,我无法让这个工作,但我已经搜索了很多网站和搜索引擎任何解决方案,以解决我附近的问题,并没有找到任何结果 . 我使用OpenCV和Kinect,只是Kinect本身,以及从SDK中修改MultiFace示例,多次编写自己的代码 . (上面列出的这些变量和函数来自MultiFace示例 . )非常感谢任何帮助 . 谢谢!

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