2015-02-04 5 views
1

나는 학생이며 현재 여러 kinect 카메라를 사용하는 프로젝트에서 작업하고 있습니다. 필자는 각 kinect 카메라에서 골격 공동 데이터를 수집하여 SkeletalViewer를 사용하여 두 개의 텍스트 파일에 별도로 저장하여 프로젝트를 시작해야합니다.최신 SkeletalViewer에서 골격 관절 좌표를 얻는 방법 (x, y, z)? (C++)

HRESULT CSkeletalViewerApp::Nui_Init() { 

    fopen_s(filePointer, "C:/User/Users/Documents/Shasa/Kinect3D.txt", "w+"); 
    filePointer = NULL; 
    . 
    . 
    . 
} 

void CSkeletalViewerApp::Nui_DrawSkeleton(const NUI_SKELETON_DATA & skel, int windowWidth, int windowHeight) 
{ 
    int i; 

    for (i = 0; i < NUI_SKELETON_POSITION_COUNT; i++) 
    { 
     m_Points[i] = SkeletonToScreen(skel.SkeletonPositions[i], windowWidth, windowHeight); 

     memset(mText, 0, 1024); 

     sprintf(mText, "(%0.3f,%0.3f,%0.3f)", skel.SkeletonPositions[i].x, skel.SkeletonPositions[i].y, skel.SkeletonPositions[i].z); 

     if (filePointer) { 
      fputs((const char*)mText, filePointer); 
     } 
    } 

    if (filePointer) { 
     fputs("\n", filePointer); 
    } 
    . 
    . 
    . 
} 

결과는 텍스트 파일이 만들어되지만 아래로 NuiImpl.cpp에서

public: 
FILE* filePointer; 
char mText[1024]; 

그리고 추가 수정 :

나는 다음과 같이 SkeletalViewer.h에 대한 몇 가지 수정을 만들었습니다 내용이 비어 있습니다. 나는 온라인 솔루션의 일부를 읽을 수는 있지만 인수로 NUI_SKELETON_DATA * pSkel를 사용 Nui_DrawSkeleton 기능의 이전 버전하지만이 새로운 버전은 &가을 skel이 NUI_SKELETON_DATA를 사용하여 다릅니다. skel.SkeletonPositions [i] .x, skel.SkeletonPositions [i] .y, skel.SkeletonPositions [i] .z을 사용하는 것이 맞습니까?

내 오류의 원인과 수정 방법을 알 수있는 사람의 도움을 구할 수 있습니까? 고맙습니다!

답변

0

skel.SkeletonPositions[i].x이 맞습니다. * pskel 대신 & skel을 사용하면 pskel->XXX에서 skel.XXX으로 변경됩니다.

문제는 여기에있을 것입니다 :

fopen_s(filePointer, "C:/User/Users/Documents/Shasa/Kinect3D.txt", "w+"); 
filePointer = NULL; 

되어야한다 :

fopen_s(&filePointer, "C:/User/Users/Documents/Shasa/Kinect3D.txt", "w+"); 
+0

대단히 감사합니다! filePointer를 NULL로 설정하는 것이 문제입니다. 나는 그것을 아래와 같이 만들었고 지금은 효과가있다! if (filePointer) \t {\t \t \t filePointer = NULL; \t} fopen_s (& filePointer, "C : /User/Users/Documents/Shasa/Kinect3D.txt", "w +"); 감사합니다. –

+0

@EvaChew'fopen_s'는'fileopin'이 NULL인지 아닌지 신경 쓰지 않기 때문에'fopen_s' 만 쓸 수 있습니다. 또한,'fopen_s'는 실패하면 에러 코드를 반환하고 성공하면 에러 코드를 반환합니다. 이 값을 확인하는 것이 좋습니다. – ElderBug

+0

알았습니다. 도와 주셔서 감사합니다! 이런 다른 문제에서 나를 도울 수 있습니까? http://stackoverflow.com/questions/28336226/how-to-initialize-two-kinect-simultaneously-skeletalviewer –