0

我正在玩新发布的 Kinect Fusion SDK。现在我对来自 Objective-C 的 C++ 很陌生,我在解释一些新函数的“文档”时遇到了困难。

ExportVolumeBlock是我试图用来隔离部分体积(面部)的功能。

public:
HRESULT ExportVolumeBlock(
     UINT sourceOriginX,
     UINT sourceOriginY,
     UINT sourceOriginZ,
     UINT destinationResolutionX,
     UINT destinationResolutionY,
     UINT destinationResolutionZ,
     UINT voxelStep,
     UINT cbVolumeBlock,
     SHORT *pVolumeBlock
)

现在我不太确定的是 cbVolumeBlock 和 pVolumeBlock。尤其是最后一个状态,您需要预先分配一个 SHORT,而 ExportVolumeBlock 需要一个 SHORT。但是文档说明要访问位于 x,y,z 的体素,请使用 pVolume[z][y][x] 但是如果我预先分配一个 3D Short 像

SHORT m_pVolumeB[30][30][30];
m_pVolume->ExportVolumeBlock(0, 0, 0, 30, 30, 30, 1, 8, m_pVolumeB);

我收到消息:

错误:“SHORT (*)[30][30]”类型的参数与“SHORT *”类型的参数不兼容

使用 1D SHORT 我确实得到了一些结果,但我不确定这是否是正确的做法。有没有人对此功能有更多经验?

4

1 回答 1

0

是的,您必须使用一维数组,然后读取它(x,y,z)是否为该卷大小(xres,yres,zres)::

int pitch = xres;
int slice = yres * pitch;
int index = (z * slice) + (y * pitch) + x;

基于http://msdn.microsoft.com/en-us/library/microsoft.kinect.nuikinectfusionvolume.inuifusionreconstruction.exportvolumeblock.aspx

于 2013-11-18T00:13:22.797 回答