Kinect + OpenNI: как удалить пользователя - PullRequest
3 голосов
/ 09 февраля 2012

Я работаю с отслеживанием пользователей: я зарегистрировал обратные вызовы (User_NewUser, User_LostUser, Pose_Detected, Calibration_Start, Calibration_End).Когда я вхожу в область датчика, меня обнаруживают и калибруют в правильном направлении.Но когда я покидаю сенсорную область (а внутри никого нет), я ожидаю, что программа вызывает обратный вызов «User_LostUser», но, похоже, этого не делает.(на самом деле, когда я вхожу снова, датчик все еще отслеживает меня!) Я ожидаю, что когда пользователь покидает сцену, программа отменяет регистрацию / удаляет его и перезапускает для проверки нового пользователя: кто-нибудь может мне помочь?

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

OpenNI (на самом деле, NITE) будет следить за вами в течение нескольких секунд после ухода со сцены. Если вы немного подождете, вы должны получить обратный вызов LostUser.

Сказав, что, если вы хотите обнаружить пользователя, покидающего сцену самостоятельно, вы можете получить центр масс пользователя (используя UserGenerator :: GetCoM). Центр масс будет 0,0,0, когда пользователь покинет сцену.

1 голос
/ 20 июня 2012

Вы также можете вызвать обратный вызов RegisterToUserExit, который запускается сразу после того, как пользователь покидает область.

// register user callbacks

XnCallbackHandle user_cb_exit_handle;

user_generator.RegisterToUserExit(
User_ExitUser
,this
,user_cb_exit_handle
);
...