左右のスワイプに使用されるのと同じロジックを使用して、上下のスワイプを検出しようとしています。それが私が思いついたものです。
// Upward Swipe
if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) > 0.4f, // Height
(p1, p2) => p2.Y - p1.Y > -0.01f, // Progression Upwards
(p1, p2) => Math.Abs(p2.X - p1.X) < 0.2f, // Length
SwipeMininalDuration, SwipeMaximalDuration))// Duration
{
RaiseGestureDetected("Upward Swipe Gesture Detected");
return;
}
// Downward Swipe
if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) > 0.4f, // Height
(p1, p2) => p2.Y - p1.Y < 0.01f, // Progression Downwards
(p1, p2) => Math.Abs(p2.X - p1.X) < 0.2f, // Length
SwipeMininalDuration, SwipeMaximalDuration))// Duration
{
RaiseGestureDetected("Downward Swipe Gesture Detected");
return;
}
スワイプの左/右と同様のロジックを使用して、heightFuntion について、y 軸の p2 と p1 の差は 40 を超える必要があると述べました (コードからわかるように)。これがうまくいくと確信していましたが、テストしたところ正確なジェスチャ出力が得られませんでした。実際には上向きであるのに、「下向きのスワイプが検出されました」という出力が得られることがあります。左スワイプと上スワイプを間違えることがあります。どこが間違っているのか教えていただけますか?投稿したばかりのアルゴリズムにエラーが含まれていますか? または、Kinect ツールボックスのどこかで何かを変更する必要がありますか? 同じアプリケーションで、上、下、左、右の手のスワイプを検出できるようにしたいと考えています。ありがとう