0

Kinect画面ナビゲーションに使用する3Dグラフィカルエディタを作成しています。
自分でカーソルを作成する必要があります。これにより、Kinectを介して右手から軸xと軸yの座標を取得し、それをコンピューター画面に変換して、カーソルをその場所に移動します。

私の本当の問題は、軸zの座標を取得するために、深度センサーからの座標も必要なことです。どんな助けでも大歓迎です。アプリはC#公式で開発されていMS Kinect SDKます。

4

1 に答える 1

2

右手でカーソルが移動する場合は、右手の座標を取得し、それをカラー座標に変換して、たとえばマウスを目的の座標に置きます。

まず、スケルトンの配列と座標マッパーインスタンスのプライベートSkeleton[]スケルトンを宣言します。private CoordinateMapper cm = new CoordinateMapper();

AllFramesReadyまたはSkeletonFramereadyイベントハンドルでは、次のことができます。

using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
 if (skeletonFrame == null)
     return;

    if (skeletons == null || skeletons.Length != skeletonFrame.SkeletonArrayLength)
    {
        skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
    }
    skeletonFrame.CopySkeletonDataTo(skeletons);

    if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked))
        return;

    Skeleton firstTrackedSkeleton = skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked).FirstOrDefault();

    CoordinateMapper cm = new CoordinateMapper(YourKinectSensor);
    ColorImagePoint colorPoint = cm.MapSkeletonPointToColorPoint(first.Joints[JointType.HandRight].Position, ColorImageFormat.RgbResolution640x480Fps30);

     //Here the variable colorPoint have the X and Y values that you need to position your cursor.
}

これが基本です。より詳細な例として、SDKに付属のサンプルを食べたと思います。

于 2012-12-02T19:35:07.087 に答える