试图让Kinect V2使用C++跟踪身体,但它并没有像预期的那样工作,而且微软关于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读取帧的第一个结果返回S_OK,但是,尝试使用GetAndRefreshBodyData获取任何被跟踪物体的信息时,总是在变量result中返回一个错误代码,它是一个非常大的负数(-ve MAXINT_32)。
除此之外,我注意到的另一件事是,在一些文档中,它暗示GetAndRefreshBodyData需要一个IBody数组作为参数,现在IBody是一个接口,它不能被实例化,那么你应该如何做到这一点。
除了Kinect->Open()之外,还需要做一些额外的设置才能实现身体跟踪吗?
发布于 2016-08-16 18:38:35
你说得对,微软的文档相当糟糕。但是SDK附带了相当多的示例项目,这始终是一个很好的起点。对于您的情况,请看一下BodyBasics C++示例。在那里你可以找到类似如下的代码:
IBody* ppBodies[BODY_COUNT] = {0}; // BODY_COUNT is 6
hr = pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies);https://stackoverflow.com/questions/38967269
复制相似问题