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;
}

0 ответов

Другие вопросы по тегам