このコードの断片は、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 (Caps Lock をオンにして) を押しても、「UserCalibration.bin」が生成されません。ハード ドライブ全体を検索しましたが、そのようなファイルは見つかりませんでした。その後、OpenNI フォルダーから「読み取り専用」プロパティを無効にします。NiUserTracker.exe を実行すると、コンソールはエラーを報告しません。
私は、キャリブレーションに少し時間がかかるオンライン キャリブレーションに最も満足しています。ユーザーがキャリブレーションしたファイルをロードすることで、このプロセスをより迅速に行うことができると思いました。
この「UserCalibration.bin」ファイルを生成できないのはなぜですか? Win7 64 ビットと 64 ビット OpenNI、および Visual Studio 2010 Ultimate (本学が研究目的で提供) を使用しています。
大変感謝しています。
よろしく、イケル