私はkinect 360とwindows sdk 1.8で作業しています。私はc#wpfで開発されたアプリケーションを手にジェスチャーでマウスカーソルを動かすことができ、クリックすることもできます。 問題は、私がカーソルを角に動かすたびに、私はkinectの前で一歩踏み出す必要があることです。 しかし、私はそのような方法でカーソルをスケールしたいので、私は手を動かすだけで、カーソルはすべての画面に移動する必要があります。ここでkinectを使って画面コーナーにカーソルを移動する方法は?
は、私がこのkinect for c# devとsimilar to youtube video codeを試してみましたが、このチュートリアルで以来、彼はSDK 1.0を使用しており、いくつかの方法が絶対あるので、私は 缶を私の手を追跡することができません
void sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
bool receivedData = false;
using (SkeletonFrame SFrame = e.OpenSkeletonFrame())
{
if (SFrame == null)
{
return;
}
else
{
skeletons = new Skeleton[SFrame.SkeletonArrayLength];
SFrame.CopySkeletonDataTo(skeletons);
receivedData = true;
}
}
if (receivedData)
{
Skeleton currentSkeleton = (from s in skeletons
where s.TrackingState == SkeletonTrackingState.Tracked
select s).FirstOrDefault();
if (currentSkeleton != null)
{
processing(currentSkeleton.Joints[JointType.HandRight]);
click(currentSkeleton.Joints[JointType.HandLeft], currentSkeleton.Joints[JointType.Head]);
}
}
}
private void processing(Joint handright)
{
Microsoft.Kinect.SkeletonPoint vector = new Microsoft.Kinect.SkeletonPoint();
vector.X = ScaleVector(1600, handright.Position.X);
vector.Y = ScaleVector(900, -handright.Position.Y);
vector.Z = handright.Position.Z;
handright.Position = vector;
zAxis = handright.Position.Z;
leftofscreen = Convert.ToInt32(handright.Position.X);
topofscreen = Convert.ToInt32(handright.Position.Y);
SetCursorPos(leftofscreen, topofscreen);
}
private void click(Joint handleft, Joint head)
{
if (handleft.Position.Y > head.Position.Y)
{
mouse_event(LEFTDOWN, leftofscreen, topofscreen, 0, 0);
mouse_event(LEFTUP, leftofscreen, topofscreen, 0, 0);
}
}
private float ScaleVector(int length, float position)
{
float value = (((((float)length)/1f)/2f) * position) + (length/2);
if (value > length)
{
return (float)length;
}
if (value < 0f)
{
return 0f;
}
return value;
}
をしようとしていますコードです私の手のわずかな動きでカーソルをすべての画面に移動できるので、カーソルを使って手の動きを正確に拡大する方法を教えてください。ここで
kinect sdk v2を使用できますか?可能であれば、問題は解決されるでしょう。それ以外はあなたの問題を解決しようとすることができます – bingcheng45
@ bingcheng45私はsdk v2を試していませんでした。あなたは私にsdk v2でこのコードでやっているのと同じことをする方法を見つけることができるリンクや記事を提案することができますか?もしあなたが私の現在のコードを手伝ってくれれば、あなたにはうれしいでしょう。前もって感謝します。 –
私は本当にこれについての記事を見つけることができませんが、あなたが見て試してみるために、ホバリングといくつかのデフォルトジェスチャーがgithub上で機能するコードを持つことができます。もしあなたが有用であると分かっていれば、私はupvote XP – bingcheng45