我想製作一個Kinect程序,這要歸功於,當您的左手X位置穿過右肩X位置時,它將在PowerPoint上播放以下幻燈片。我已經完成了繪製骨架流的程序部分,並且它正常工作。對於第二部分,我試過這個:將兩個關節位置與Kinect比較
private void NextSlide(Skeleton skeleton)
{
Joint leftHand = skeleton.Joints[JointType.HandLeft];
Joint spine = skeleton.Joints[JointType.Spine];
Joint shoulderRight = skeleton.Joints[JointType.ShoulderRight];
bool check = false;
if (leftHand.Position.X == shoulderRight.Position.X && check == false)
{
check = true;
System.Windows.Forms.SendKeys.Send("{RIGHT}");
}
if (leftHand.Position.X == spine.Position.X && check == true)
{
check = false
}
}
任何人都可以解釋我在我的代碼中有什麼問題? 謝謝,
編輯:
我也試過這樣:
private void NextSlide(Skeleton skeleton)
{
Joint leftHand = skeleton.Joints[JointType.HandLeft];
Joint spine = skeleton.Joints[JointType.Spine];
Joint shoulderRight = skeleton.Joints[JointType.ShoulderRight];
double lefthandposition = (int)leftHand.Position.X;
double shoulderrightposition = (int)shoulderRight.Position.X;
double spineposition = (int)spine.Position.X;
bool turn = false;
double right = lefthandposition - shoulderrightposition;
bool finish = false;
double ok = lefthandposition - spineposition;
if (right < 0)
{
turn = true;
}
if (ok > 0)
{
finish = true;
}
bool check = false;
if (turn == true && check == false && finish == false)
{
System.Windows.Forms.SendKeys.Send("{RIGHT}");
check = true;
turn = false;
}
if (finish == true && check == true && turn == false)
{
check = false;
finish = false;
}
}
但它不工作太:/
的兩個職位的機率完全相等,都很渺茫。您可以通過在肩部附近揮動手臂一段時間來實現它。另外,你使用了'JointType.ShoulderLeft'而不是'JointType.ShoulderRight'。 –
對不起ShoulderLeft,在我的代碼中,我寫了ShoulderRight,但是當我複製出來時,我犯了一個錯誤:/。否則,我必須做些什麼才能做到這一點,只需在我的肩膀附近揮手一段時間。 –