我在这里需要一点帮助。我有一个使用 SimpleOpenNi 库进行处理的 kinect,例如,我只希望 kinect 在 2 秒内仅发送 2 个骨架的位置。如果位置与之前发送的相同,则不执行该操作,这可能吗?谢谢你
问问题
200 次
1 回答
0
是的,您必须在“发送”和另一个之间设置延迟。
在您正在读取值的线程中:
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(这里有一个讨论):
对于彩色图像
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>
于 2013-12-04T16:10:43.060 回答