Kinect Body 跟踪 GetAndRefreshBodyData returns 错误
Kinect Body Tracking GetAndRefreshBodyData returns error
尝试使用 C++ 使 Kinect V2 跟踪 body,但它没有按预期工作,另外微软关于 kinect V2 的 C++ API 的文档非常差
相关代码片段:
HRESULT result;
if (BodyFrameReader != nullptr)
{
result = BodyFrameReader->AcquireLatestFrame(&BodyFrame);
if (result == S_OK)
{
IBody** bodies =nullptr;
result = BodyFrame->GetAndRefreshBodyData(BODY_COUNT, bodies);
if (result == S_OK)
Print("Success");
else
Print("Fail "+result );
BodyFrame->Release();
}
}
因此,使用 AcquireLatestFrame
returns S_OK
读取帧的第一个结果但是尝试始终使用 GetAndRefreshBodyData
获取任何跟踪的 body 的信息 returns 变量 result
中的错误代码,它是一些非常大的负数 (-ve MAXINT_32) .
除此之外我注意到的另一件事是在一些文档中它暗示好像 GetAndRefreshBodyData
需要一个 IBody
的数组作为参数现在 IBody
是一个接口并且它无法实例化,所以你应该怎么做。
除了 Kinect->Open()
之外,是否还需要进行一些额外的设置才能进行 body 跟踪?
你是对的,微软的文档很糟糕。但是 SDK 附带了相当多的示例项目,它们始终是一个很好的起点。对于您的情况,请查看 BodyBasics C++ 示例。在那里您会找到如下代码:
IBody* ppBodies[BODY_COUNT] = {0}; // BODY_COUNT is 6
hr = pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies);
尝试使用 C++ 使 Kinect V2 跟踪 body,但它没有按预期工作,另外微软关于 kinect V2 的 C++ API 的文档非常差
相关代码片段:
HRESULT result;
if (BodyFrameReader != nullptr)
{
result = BodyFrameReader->AcquireLatestFrame(&BodyFrame);
if (result == S_OK)
{
IBody** bodies =nullptr;
result = BodyFrame->GetAndRefreshBodyData(BODY_COUNT, bodies);
if (result == S_OK)
Print("Success");
else
Print("Fail "+result );
BodyFrame->Release();
}
}
因此,使用 AcquireLatestFrame
returns S_OK
读取帧的第一个结果但是尝试始终使用 GetAndRefreshBodyData
获取任何跟踪的 body 的信息 returns 变量 result
中的错误代码,它是一些非常大的负数 (-ve MAXINT_32) .
除此之外我注意到的另一件事是在一些文档中它暗示好像 GetAndRefreshBodyData
需要一个 IBody
的数组作为参数现在 IBody
是一个接口并且它无法实例化,所以你应该怎么做。
除了 Kinect->Open()
之外,是否还需要进行一些额外的设置才能进行 body 跟踪?
你是对的,微软的文档很糟糕。但是 SDK 附带了相当多的示例项目,它们始终是一个很好的起点。对于您的情况,请查看 BodyBasics C++ 示例。在那里您会找到如下代码:
IBody* ppBodies[BODY_COUNT] = {0}; // BODY_COUNT is 6
hr = pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies);