Zajmuję się programowaniem do przesuwania myszy w oparciu o pewne współrzędne, które otrzymuję z głębi obrazu z kinect. ale mam 30 klatek/sekundę (obrazy/sekundę) i te współrzędne zmieniają się z każdą ramką, więc mysz wciąż się porusza. Moje pytanie brzmi: czy istnieje sposób na wygładzenie ruchu myszy?wygładzanie ruchów myszy
Odpowiedz
Tak, możesz rozpocząć śledzenie za pomocą parametrów, które pozwolą Ci uzyskać płynniejszy ruch.
Poniżej znajduje się przykładowy kod:
var parameters = new TransformSmoothParameters
{
Smoothing = 0.2f,
Correction = 0.0f,
Prediction = 0.0f,
JitterRadius = 1.0f,
MaxDeviationRadius = 0.5f
};
this._sensor.SkeletonStream.Enable(parameters);
można zmienić Smoothing
, Correction
, Prediction
, JitterRadius
i MaxDeviationRadius
do dowolnych liczb chcesz.
Fixus, to zadziała tylko wtedy, gdy OP śledzi szkielet - nie, jeśli bezpośrednio wykorzystuje obraz głębokości do obliczenia pozycji myszy. – Ani
@ananthonline prawda, że. Powinienem to napisać. Ale połączenie obu strumieni nie jest trudne, więc pomyślałem, że to dobrze napisać :) – Fixus
Dziękuję za odpowiedź, nie jestem tego pewien, ale czy istnieje sposób na mapowanie współrzędnych głębokości do punktu szkieletu i śledzenie tego jeden? jeśli tak, proszę podać mi przykładowy kod. Z góry dzięki –
Skoro chciałeś wiedzieć o "mapping depth coordinates to skeleton points", można użyć DepthImageFrame
„s MapToSkeletonPoint()
która przyjmuje wartości X i Y danych głębokości, a następnie utworzyć SkeletonPoint
. Przykład:
SkeletonPoint point = depthFrame.MapToSkeletonPoint(x, y);
Mam nadzieję, że to pomoże!
Czy możesz podać więcej informacji? Ile wynosi ruch drgający (duży/mały)? Jeśli jest mały - pomocne może być proste filtrowanie czasowe. Jeśli jest duży, prawdopodobnie wskazuje na problemy z danymi/algorytmem i nie można go wygładzić bez ponownego przemyślenia problemu. – Ani
Jak powiedział @antanthonline - potrzebowalibyśmy dużo więcej kontekstu i bez wątpienia kilka przykładowych kodów. Brzmi interesująco - lubię takie problemy, trochę kodu. –
Jitter jest mały, ale chcę go wygładzić, tak jak wtedy, gdy mysz powinna przechodzić z innej pozycji. Pokazuje pewną nieciągłość. Chcę go przenieść tak, jak robi to normalna mysz (wiem, że normalna mysz ma znacznie wyższą częstotliwość, ale czy jest jakikolwiek sposób na przesunięcie kursora w podobny sposób?) –