2013-12-11 150 views
1

我正在使用Kinect for Windows SDK(v1.8) 我正在從Kinect讀取運動,但我現在想知道如何獲得我正在跟蹤的關節的絕對位置(右手)Kinect關節絕對座標

我正在使用以下函數NuiTransformSkeletonToDepthImage,但在x和y座標中的值範圍均爲100-200。

如何將返回的座標轉換爲屏幕座標的任何建議? 有一種感覺,我失去了一些東西,雖然真的很明顯...

預先感謝您

回答

0

好了,相當多的環顧四周,經過反覆試驗;我找到了解決方案。

當您調用NuiTransformSkeletonToDepthImage();您可以使用NUI_IMAGE_RESOLUTION枚舉指定Kinect分辨率。我相信價值觀是; 80x60,320x240,640x480,1280x960

根據您決定使用的分辨率;您需要將返回的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); 

任何問題;隨時提問。