0

我想知道如何根据我的屏幕分辨率转换骨架手位置指针(例如我在我的应用程序上绘制的一些椭圆)。例如,当用户在最大两侧展开他们的手时,我的手指针需要到达我的屏幕左右边缘。我什至也尝试过以下方法。但骨架点到深度转换器似乎以 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 的问题吗?

4

1 回答 1

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;

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

于 2012-10-11T15:40:40.670 回答