Я использую Kinect для Windows SDK (v1.8)
Я успешно читаю движение из Kinect, но теперь мне интересно, как получить абсолютную позицию сустава, который я отслеживаю (правая рука)
Я использую следующую функцию, NuiTransformSkeletonToDepthImage, но значения варьируются от 100-200 в координатах x и y.
Любые предложения о том, как преобразовать возвращенные координаты в координаты экрана?
У меня есть чувство, что я упускаю что-то действительно очевидное, хотя …
заранее спасибо
Хорошо, после долгого осмотра, проб и ошибок; Я нашел решение.
Когда вы вызываете NuiTransformSkeletonToDepthImage (); Вы можете указать разрешение Kinect, используя перечисление NUI_IMAGE_RESOLUTION. Я считаю, что ценности; 80×60, 320×240, 640×480, 1280×960
В зависимости от того, какое разрешение вы решите использовать; вам нужно разделить возвращенные координаты x и y на соответствующее разрешение. Затем умножьте их на размер вашего окна, и у вас должны быть координаты в вашем окне.
Я считаю, что вы также можете указать разрешение при создании экземпляра интерфейса датчика Kinect.
Пример, как мое объяснение не слишком кратко:
float x, y
const Vector4 fromPos = skeleton.SkeletonPositions[NUI_SKELETON_POSITION_HAND_RIGHT];
NuiTransformSkeletonToDepthImage(fromPos, &x, &y, NUI_IMAGE_RESOLUTION_320x240);
x = x * ((float)WINDOW_WIDTH / 320.0f);
y = y * ((float)WINDOW_HEIGHT / 240.0f);
Любые вопросы; не стейсняйся спросить.
Других решений пока нет …