2016-08-16 11 views
2

Попытки получить тело отслеживаемого Kinect V2 с помощью C++, но он не работает, как ее предполагается, также в документации Microsoft на C++ API для KINECT V2 является исключительно беднаKinect Body Tracking GetAndRefreshBodyData возвращается ошибка

отношения фрагмента кода:

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(), чтобы добраться до слежения за телом?

ответ

4

Вы правы, документация Microsoft довольно плохая. Но SDK поставляется с несколькими примерами проектов, которые всегда являются хорошей отправной точкой. Для вашего примера взгляните на образец BodyBasics C++. Там вы найдете следующий код:

IBody* ppBodies[BODY_COUNT] = {0}; // BODY_COUNT is 6 
hr = pBodyFrame->GetAndRefreshBodyData(_countof(ppBodies), ppBodies); 
+0

Это сделало его, спасибо. Большинство образцов и онлайн-документов сосредоточены на C#, поэтому я не обращал внимания на это. – Allahjane

+1

Когда вы установили Kinect SDK, он также установил «браузер SDK». Используя это, вы можете отфильтровать образцы, поэтому он отображает только C++. – HenningJ