나는 학생이며 현재 여러 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을 사용하는 것이 맞습니까?
내 오류의 원인과 수정 방법을 알 수있는 사람의 도움을 구할 수 있습니까? 고맙습니다!
대단히 감사합니다! filePointer를 NULL로 설정하는 것이 문제입니다. 나는 그것을 아래와 같이 만들었고 지금은 효과가있다! if (filePointer) \t {\t \t \t filePointer = NULL; \t} fopen_s (& filePointer, "C : /User/Users/Documents/Shasa/Kinect3D.txt", "w +"); 감사합니다. –
@EvaChew'fopen_s'는'fileopin'이 NULL인지 아닌지 신경 쓰지 않기 때문에'fopen_s' 만 쓸 수 있습니다. 또한,'fopen_s'는 실패하면 에러 코드를 반환하고 성공하면 에러 코드를 반환합니다. 이 값을 확인하는 것이 좋습니다. – ElderBug
알았습니다. 도와 주셔서 감사합니다! 이런 다른 문제에서 나를 도울 수 있습니까? http://stackoverflow.com/questions/28336226/how-to-initialize-two-kinect-simultaneously-skeletalviewer –