【问题标题】:smoothing mouse movement平滑鼠标移动
【发布时间】:2012-05-25 15:00:53
【问题描述】:

我正在开发一个软件来根据我从 kinect 的深度图像中获得的某些坐标移动鼠标。但我有 30 帧/秒(图像/秒)并且这些坐标随每一帧而变化,因此鼠标不断移动。我的问题是,有没有办法平滑鼠标的移动?

【问题讨论】:

  • 您能提供更多信息吗?抖动运动(大/小)是多少?如果它很小 - 某种简单的时间过滤会有所帮助。如果它很大,则可能表明您的数据/算法存在问题,并且如果不重新考虑问题就无法进行平滑处理。
  • 正如@ananthonline 所说 - 我们需要更多的上下文,毫无疑问还有一些示例代码。不过听起来很有趣 - 我喜欢这样的问题,请编写一些代码。
  • 抖动很小,但我想要的是平滑移动,比如鼠标应该从一个位置移动到另一个位置。它显示了一些不连续性。我想要一种像普通鼠标一样移动它的方法(我知道普通鼠标的频率要高得多,但是有什么方法可以类似地移动我的光标吗?)

标签: c# mouse move kinect


【解决方案1】:

是的,您可以使用一些参数开始跟踪,使移动更顺畅。
下面是示例代码:

        var parameters = new TransformSmoothParameters
        {
            Smoothing = 0.2f,
            Correction = 0.0f,
            Prediction = 0.0f,
            JitterRadius = 1.0f,
            MaxDeviationRadius = 0.5f
        };

        this._sensor.SkeletonStream.Enable(parameters);

您可以将SmoothingCorrectionPredictionJitterRadiusMaxDeviationRadius 更改为您想要的任何数字。

【讨论】:

  • Fixus,这仅在 OP 正在跟踪骨架时才有效 - 如果他直接使用深度图像来计算鼠标位置,则不会。
  • @ananthonline 确实如此。我应该这样写。但是将两个流结合起来并不难,所以我认为这是一个好写的东西:)
  • 感谢您的回答,我不确定这一点,但有没有办法将深度坐标映射到骨架点并跟踪它?如果是,请给我一个示例代码。提前致谢
【解决方案2】:

由于您想了解"mapping depth coordinates to skeleton points",您可以使用DepthImageFrameMapToSkeletonPoint(),它获取深度数据的X 和Y 值,然后创建SkeletonPoint。示例:

 SkeletonPoint point = depthFrame.MapToSkeletonPoint(x, y);

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-22
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多