此代码片段取自名为 NiUserTracker 的 OpenNI 示例
//... some codes...
#define XN_CALIBRATION_FILE_NAME "UserCalibration.bin"
// Save calibration to file
void SaveCalibration()
{
XnUserID aUserIDs[20] = {0};
XnUInt16 nUsers = 20;
g_UserGenerator.GetUsers(aUserIDs, nUsers);
for (int i = 0; i < nUsers; ++i)
{
// Find a user who is already calibrated
if (g_UserGenerator.GetSkeletonCap().IsCalibrated(aUserIDs[i]))
{
// Save user's calibration to file
g_UserGenerator.GetSkeletonCap().SaveCalibrationDataToFile(aUserIDs[i], XN_CALIBRATION_FILE_NAME);
break;
}
}
}
//... some codes ...
//... some codes ...
void glutKeyboard (unsigned char key, int x, int y)
{
switch (key)
{
case 27:
CleanupExit();
//... some codes...
case 'S':
SaveCalibration();
break;
case 'L':
LoadCalibration();
break;
}
}
当我按下 Shift+s 或 S(大写锁定)时,它不会生成“UserCalibration.bin”。我完全搜索了我的硬盘驱动器,但没有找到这样的文件。之后,我禁用了 OpenNI 文件夹中的“只读”属性。控制台,当我执行 NiUserTracker.exe 时,没有报告任何错误。
我对它的在线校准最满意,校准需要一点时间,我认为通过加载用户校准的文件可以更快地完成这个过程。
能否指出我正确的方向,为什么我无法生成这个“UserCalibration.bin”文件?我正在使用带有 64 位 OpenNI 的 Win7 64 位和 Visual Studio 2010 Ultimate(由我们大学提供用于研究目的)。
非常感激。
问候, 伊克尔