使用Kinect 1.5访问特定像素(对应于面部点)

时间:2012-07-06 20:28:13

标签: visual-studio-2010 visual-c++ kinect pixels rgba

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

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

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

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

0 个答案:

没有答案