【发布时间】:2012-06-04 19:09:28
【问题描述】:
我正在做一个项目,使用指尖移动鼠标光标,kinect 使用深度图像进行跟踪。我一直在进行跟踪,但问题在于以平滑的方式移动鼠标。在我的程序中,当我移动鼠标时,它不会以平滑的方式移动,而是从一个像素跳到另一个像素。我的问题是,有没有办法使用骨骼跟踪的平滑参数之类的东西来平滑光标的移动?
【问题讨论】:
我正在做一个项目,使用指尖移动鼠标光标,kinect 使用深度图像进行跟踪。我一直在进行跟踪,但问题在于以平滑的方式移动鼠标。在我的程序中,当我移动鼠标时,它不会以平滑的方式移动,而是从一个像素跳到另一个像素。我的问题是,有没有办法使用骨骼跟踪的平滑参数之类的东西来平滑光标的移动?
【问题讨论】:
我认为问题在于您仅在 kinect 深度事件触发时才移动鼠标(当您获得有关人手指的新信息时)。
windows 中没有功能,但是,您可以创建一个。尝试使用被跟踪手指的 dy/dx 实现 P(简单)、PD(稍微难一点)或 PID(再难一点)控制器。这样,即使在 kinect 的深度事件之间,鼠标也会以一定的速度移动,并且应该看起来更平滑。
【讨论】:
你可以使用一些东西。
您可以使用库 Coding4Fun.Kinect.Wpf 中包含的方法;调用 scaleTo()
var scaledHandRight = ElgatoElegido.Joints[JointType.HandRight].ScaleTo(1366, 768, 0.5f, 0.4f);
并帮助平滑参数骨架识别。
var parameters = new TransformSmoothParameters { Smoothing = 0.3f, Correction = 0.0f, Prediction = 0.0f, JitterRadius = 1.0f, MaxDeviationRadius = 0.5f };
newSensor.SkeletonStream.Enable(parameters);
【讨论】: