ich arbeite mit kinect 360 und windows sdk 1.8. Ich habe eine Anwendung in C# wpf entwickelt, die Mauszeiger mit Handgesten bewegen können und in der Lage auch zu klicken. Das Problem ist, wenn ich den Cursor in die Ecke bewegen will, muss ich einen Schritt vor Kinect machen, um das zu tun. aber ich möchte den Cursor so skalieren, dass ich nur meine Hand bewegen muss und der Cursor sich auf den ganzen Bildschirm bewegt. HierWie bewegt man den Cursor mit kinect zu Bildschirmecken?
ist der Code, den ich versuche
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;
}
ich versucht habe diese kinect for c# dev und similar to youtube video code aber da in diesem Tutorial ist er mit sdk 1.0 und einige Methoden sind absolut, so bin ich nicht in der Lage meine Hände verfolgen können jemand mir helfen, wie ich meine Handbewegung mit dem Cursor richtig skalieren kann, so kann ich Cursor auf den ganzen Bildschirm mit einer leichten Bewegung meiner Hand bewegen? Hier
Können Sie kinect sdk v2 verwenden? wenn Sie können, würde das Problem gelöst werden. Andernfalls kann ich versuchen, Ihr Problem zu lösen – bingcheng45
@ bingcheng45 ich versuchte nicht sdk v2. kannst du mir einen Link oder einen Artikel vorschlagen, wo ich finde, wie ich dasselbe mache, was ich in diesem Code mit sdk v2 mache, aber wenn du mir mit meinem aktuellen Code helfen kannst, der sehr nett von dir sein wird. Vielen Dank im Voraus. –
Ich kann nicht wirklich einen Artikel dazu finden, aber ich kann meinen Code haben, der nur Schweben hat und einige Standardgesten auf github funktionieren, damit Sie sehen und ausprobieren können. Wenn Sie das nützlich finden, geben Sie mir ein upvote XP – bingcheng45