Java 当我不';别动
我正在使用JavaLeapMotionSDK2.2。我想检测我的拇指的位置,观察我的拇指是否在移动,但是我有一些污染的信息,我不知道这些信息是从哪里来的Java 当我不';别动,java,leap-motion,Java,Leap Motion,我正在使用JavaLeapMotionSDK2.2。我想检测我的拇指的位置,观察我的拇指是否在移动,但是我有一些污染的信息,我不知道这些信息是从哪里来的 for (Finger f : frame.fingers()) { switch (f.type()) { case TYPE_THUMB : if(f.hand().isRight()) {
for (Finger f : frame.fingers())
{
switch (f.type())
{
case TYPE_THUMB :
if(f.hand().isRight())
{
System.out.println(" position : (x:" + f.tipPosition().getX() + " , y:" + f.tipPosition().getY() +")");
}
}
}
我有这样的结果(当我不动我的手和拇指的时候)
有一个bug或者我不明白为什么这些信息会改变
编辑:
FingerID有一个问题,听起来好像在我控制的右手中检测到两个拇指:
frameID: 96859 FingerID: 410 position : (x:-63.791225 , y:171.73073)
frameID: 96859 FingerID: 411 position : (x:10.867295 , y:157.37088)
frameID: 96934 FingerID: 410 position : (x:-63.86908 , y:173.62065)
frameID: 96934 FingerID: 411 position : (x:10.567341 , y:157.86476)
开关箱有问题。。。(我不知道确切原因)但开关箱+f.hand().isRight()工作不正常
switch (f.type())
{
case TYPE_THUMB :
if(f.hand().isRight())
{
...
}
}
我的解决方案是添加第二个验证:
switch (f.type())
{
case TYPE_THUMB :
if(f.type().swigValue() == 0)
{
if(f.hand().isRight())
{
...
}
}
}
将frame ID和finger ID添加到打印输出中,以查看在一帧中是否有两个右手拇指,而不是在交替帧中有一个拇指跳到两个不同的位置。另外,看看诊断可视化工具,看看它显示了什么。好主意,它不是同一个fingerID:frameID:38641 fingerID:211位置:(x:47.511364,y:194.00133)frameID:38715 fingerID:210位置:(x:-14.853537,y:202.17497)就像我有两个拇指,但我总是排除一只手,这怎么可能?(我只有一只手在可视化仪上…)解决了:开关盒的问题。。。非常奇怪。您的跟踪输出显示两个手指在同一只手上。手指id的最后一个数字是0-5,表示拇指小指。前面的数字是手的ID。因此,第二个手指是食指。不过,用Thumb case语句打印出来仍然没有意义。事实上,我将您的原始代码复制到了一个处理草图中,效果很好(只打印右拇指信息)。我不明白为什么我的开关盒在我的代码中不起作用,但我已经解决了这个问题。谢谢你的帮助。
switch (f.type())
{
case TYPE_THUMB :
if(f.type().swigValue() == 0)
{
if(f.hand().isRight())
{
...
}
}
}