2016-08-16 4 views
2

는 C++를 사용하여 키 넥트 V2 추적 몸을 얻으려고 노력하지만, C에 또한 마이크로 소프트의 문서에 가정 ++ KINECT V2에 대한 API가넥트 바디 추적 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(); 
    } 
} 

그래서 그러나 항상 GetAndRefreshBodyData를 사용하는 추적의 몸에 대한 정보를 얻으려고 노력 AcquireLatestFrame 반환 S_OK를 사용하여 프레임을 읽기의 첫 번째 결과는 매우 큰 음수 (- 제가 MAXINT이 변수 result에서 오류 코드를 반환 _32). 그렇다 내가 발견 한 또 다른 한가지는 GetAndRefreshBodyData 매개 변수로 IBody의 배열을 필요로하는 경우 지금 IBody가 인터페이스이며 그래서 당신이 그렇게 가정하는 방법을 인스턴스화 할 수 없습니다로 힌트 일부 문서에이에서

.

신체 추적을하려면 Kinect->Open() 이외의 다른 설정이 필요합니까?

답변

4

네가 맞다. 마이크로 소프트의 문서는 꽤 나쁘다. 그러나 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