Kinect не может правильно выполнить NuiCameraElevationSetAngle
Я создал Kinect DLL в C++, который можно использовать как плагин для навигации в 3D-среде с помощью жестов рук. Работает отлично. Тем не менее, когда я пытаюсь выполнить
NuiCameraElevationSetAngle(10);
система Kinect зависает примерно на 15 секунд перед возвратом кода ошибки:
E_NUI_DEVICE_NOT_READY
Какие дополнительные шаги инициализации я должен выполнить? Что может быть не так?
Я действительно не понимаю, как это возможно, так как я могу, например, с радостью получать данные скелета.
Мой код:
// Locate a working kinect sensor
int numSensors;
// we need to instantiate the skeleton vector
m_skeletons = new std::vector<Skeleton *>();
if (NuiGetSensorCount(&numSensors) < 0 || numSensors < 1)
{
cout << "No Kinect devices found." << endl;
return false;
}
cout << "Found " << numSensors << " Kinect device(s); first available was initialized." << endl;
if (NuiCreateSensorByIndex(0, &sensor) < 0)
{
cout << "Could not establish connection with Kinect device." << endl;
return false;
}
cout << "Connected." << endl;
// Initialize sensor
if(!SUCCEEDED(sensor->NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH | NUI_INITIALIZE_FLAG_USES_COLOR
| NUI_INITIALIZE_FLAG_USES_SKELETON)))
{
cout << "Error initialising Kinect device." << endl;
return false;
}
cout << "Initialized." << endl;
sensor->NuiImageStreamOpen(NUI_IMAGE_TYPE_COLOR, // Depth camera or rgb camera?
NUI_IMAGE_RESOLUTION_640x480, // Image resolution
0, // Image stream flags, e.g. near mode
2, // Number of frames to buffer
NULL, // Event handle
&rgbStream);
// Create an event that will be signaled when skeleton data is available
m_hNextSkeletonEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
// Open a skeleton stream to receive skeleton data
m_hSkeletonStream = sensor->NuiSkeletonTrackingEnable(m_hNextSkeletonEvent, 0);
cout << "Skeleton stream initialised." << endl;
NuiCameraElevationSetAngle(10); // cause E_NUI_DEVICE_NOT_READY error code... ???
return true;
}