【发布时间】:2013-12-04 16:06:29
【问题描述】:
我在这里需要一点帮助。 我有一个使用 SimpleOpenNi 库进行处理的 kinect,例如,我只希望 kinect 在 2 秒内仅发送 2 个骨架的位置。如果位置与之前发送的相同,则不执行操作,这可能吗? 谢谢你
【问题讨论】:
标签: java kinect processing simple-openni
我在这里需要一点帮助。 我有一个使用 SimpleOpenNi 库进行处理的 kinect,例如,我只希望 kinect 在 2 秒内仅发送 2 个骨架的位置。如果位置与之前发送的相同,则不执行操作,这可能吗? 谢谢你
【问题讨论】:
标签: java kinect processing simple-openni
是的,您必须在“发送”和另一个之间设置延迟。
在您正在读取值的线程中:
while(..) {
Thread.sleep(2000); /* delay 2000ms => 2s */
/* read value */
/* if not the first iteration, save value in temp array */
/* else check for each bone: oldPos - epsilon < newPos < oldPos + epsilon */
}
要检查以前的位置是否相同,您必须将骨架位置保存在临时变量中并检查新值是否相同,可能是某个特定的邻域。
遗憾的是没有其他解决方案,因为在配置文件中您只能设置两种 FPS(here 有一个讨论):
用于彩色图像
FPS = 15 @ 1280x1024
FPS = 30 @ 640x480
对于深度 FPS = 30 @ 640x480
在您的配置文件的标签 MapOutputMode 中:
<OpenNI>
<Licenses>
<License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>
</Licenses>
<Log writeToConsole="false" writeToFile="false">
<LogLevel value="3"/>
<Masks>
<Mask name="ALL" on="true"/>
</Masks>
<Dumps></Dumps>
</Log>
<ProductionNodes>
<Node type="Depth" name="Depth1">
<Configuration>
<MapOutputMode xRes="640" yRes="480" FPS="30" />
<Mirror on="false"/>
</Configuration>
</Node>
<Node type="User"/>
<Node type="Gesture"/>
<Node type="Hands"/>
</ProductionNodes>
</OpenNI>
【讨论】: