Kinect SDK1.5:如何在不要求用户在所有屏幕分辨率下物理移动的情况下,将手指针放在屏幕上?

时间:2012-10-11 11:21:52

标签: kinect

我想知道如何根据我的屏幕分辨率转换骨架指针位置指针(例如我在我的应用程序上绘制的一些椭圆)。例如,当用户在两侧最大时伸出手时,我的手形指针需要到达我的屏幕左右边缘。我甚至尝试过以下方法。但骨架指向深度转换器转换为640 * 480分辨率最大似乎。

private Point SkeletonPointToScreen(SkeletonPoint skelpoint)
{
    DepthImagePoint depthPoint = this.sensorChooser.Kinect.MapSkeletonPointToDepth(skelpoint,DepthImageFormat.Resolution640x480Fps30);     return new Point(depthPoint.X, depthPoint.Y);
}  

因此,我的手点无法到达1366 * 768分辨率屏幕的左右边缘。

有人可以帮我解决使用kinect sdk1.5吗?

1 个答案:

答案 0 :(得分:0)

这些将为您提供主显示屏的分辨率。

SystemParameters.PrimaryScreenWidth;
SystemParameters.PrimaryScreenHeight;

然后您可以根据该标准化手部位置。例如,我为我的一个应用程序执行以下操作:

double xScaled = (rightHand.Position.X - leftShoulder.Position.Y) / ((rightShoulder.Position.X) * 2) * SystemParameters.PrimaryScreenWidth;
double yScaled = (rightHand.Position.Y - rightShoulder.Position.Y) / (rightHip.Position.Y - rightShoulder.Position.Y) * SystemParameters.PrimaryScreenHeight;

这给了我一个手部动作的边界框。当右手到达左肩时,到达屏幕的左侧。屏幕右侧是右肩宽度。屏幕的顶部/底部分别是肩部和臀部。