Kinect
画面ナビゲーションに使用する3Dグラフィカルエディタを作成しています。
自分でカーソルを作成する必要があります。これにより、Kinectを介して右手から軸xと軸yの座標を取得し、それをコンピューター画面に変換して、カーソルをその場所に移動します。
私の本当の問題は、軸zの座標を取得するために、深度センサーからの座標も必要なことです。どんな助けでも大歓迎です。アプリはC#
公式で開発されていMS Kinect SDK
ます。
右手でカーソルが移動する場合は、右手の座標を取得し、それをカラー座標に変換して、たとえばマウスを目的の座標に置きます。
まず、スケルトンの配列と座標マッパーインスタンスのプライベート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に付属のサンプルを食べたと思います。