我正在开发一个使用kinect作为输入设备的应用程序(游戏排序)。我需要一个“版主”能够重置应用程序一旦新用户感兴趣。
我在想,用一只手盖住传感器几秒钟就行了。然而,要做到这一点,唯一的方法是分析rgb相机输出的所有时间的“全黑”。
对此有什么想法吗?
非常感谢。
附注:我在mac上使用openni sdk,游戏是使用airkinect框架在as3中开发的。
发布于 2013-09-11 06:24:39
你提到的听起来像是一个公平的解决方案。在类似的线路上,您甚至可以使用深度传感器,并将深度检测为(约)0以触发重置。
但是,我可以提出使用任何一种解决方案都可能是假阳性的情况。为了保持用户的简单性,你甚至可能想要使用零深度和全黑的组合。
为了让它变得复杂和准确,你可以使用二维码或红纸来指示(停止)。果岭(代表围棋)等
(如果您认为此解决方案足够,请将其标记为已接受。等待您的意见(如果有)。)
发布于 2013-09-11 16:01:12
我的第一个想法是使用语音识别。这看起来比覆盖传感器更自然。如果你限制语音命令,它会工作得很好。
在过去,我曾使用语音识别来确定“游乐场”的最左边和最右边的边缘,方法是将手放在其中一个边缘上,然后说"calibrate“、"left”、"right“和”of“来确认。它工作得很好。如果你有很多人在说话,你可以先听一个关键短语。因此,"Kinect: calibrate“和"Kinect: left”可以过滤掉误报。
发布于 2013-09-11 23:36:11
您应该首先回答用户和版主将如何与应用程序和活动交互空间交互的问题。如果主持人不得不接近Kinect传感器并遮住摄像头来重置实例,为什么不直接给他们一个无线键盘或鼠标来握住呢?在这种情况下,鼠标点击或击键可以重置场景--键盘将提供许多其他键,以便在多个场景或配置设置之间跳转。
如果你真的需要一个“免提”的解决方案为主持人,我会考虑手势或语音识别。我对OpenNI不是很熟悉,所以下面的链接会引用微软SDK,但可以作为参考和想法……
在语音识别的情况下,可以使用“激活”关键字(例如,"Kinect“或"Computer"),后跟动作请求(例如,"Destruct sequence 3,code 1B-2B-3”,或者如果你想无聊,则只使用"reset“)。您可以在此处阅读有关使用Microsoft库进行语音识别的更多信息:http://msdn.microsoft.com/en-us/library/system.speech.recognition.aspx
对于手势,您可以使用静态手势来重置场景--例如,在XBox上,将一只手臂放在您的一侧,另一只手臂保持45度角将使您返回主菜单。你总是可以假设主持人会站在某一方,或者永远是第二个进入场景的玩家。如果需要,你可以不关心,让用户重置场景。你也可以把它们混在一起,让版主先给出一个“控制”手势或语音命令,这样系统就知道他们是版主,然后再给出重置(或其他)手势。
这里有两个手势库可以在这方面提供帮助:
https://stackoverflow.com/questions/18729669
复制相似问题