我是一名学生,目前正在使用多个 kinect 相机从事一个项目。我必须通过从每个 kinect 相机获取骨骼关节数据并使用 SkeletalViewer 将它们分别存储到两个文本文件中来开始我的项目。
我对 SkeletalViewer.h 做了如下修改:
public:
FILE* filePointer;
char mText[1024];
并在NuiImpl.cpp中进一步修改如下:
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);
}
.
.
.
}
结果是生成了文本文件,但是内容是空白的。我在线阅读了一些解决方案,但以前版本的 Nui_DrawSkeleton 函数 使用 NUI_SKELETON_DATA * pSkel 作为参数,但这个新版本使用 NUI_SKELETON_DATA & skel 不同强>.使用 skel.SkeletonPositions[i].x, skel.SkeletonPositions[i].y, skel.SkeletonPositions[i].z 是否正确?
我可以寻求任何人的帮助,谁能帮助我看看是什么原因导致我的错误以及如何修改它?谢谢!
skel.SkeletonPositions[i].x
是正确的。使用 & skel
而不是 * pskel
只会将 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+");
我是一名优秀的程序员,十分优秀!