微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

飞跃运动控制器

如何解决飞跃运动控制器

我使用 Leap 运动控制器进行手势数据采集。我使用下面的 python 代码,但遇到了一些问题。首先,Leap 库仅适用于 python 2,因此我在 anaconda 中创建了版本 2 的环境来使用我的代码。其次,它只是保存一个我认为是空的 frame.data 文件。因为它不需要任何时间。我也不认为我的程序甚至连接到 LMC 设备。

import sys
import os
import Leap
import ctypes

controller = Leap.Controller()
frame = controller.frame()
hands = frame.hands
pointables = frame.pointables
fingers = frame.fingers
tools = frame.tools
serialized_tuple = frame.serialize
serialized_data = serialized_tuple[0]
serialized_length = serialized_tuple[1]
data_address = serialized_data.cast().__long__()
buffer = (ctypes.c_ubyte * serialized_length).from_address(data_address)
with open(os.path.realpath('frame.data'),'wb') as data_file:
       data_file.write(buffer)

解决方法

我建议您通读我们的开发者网站 here 上提供的 Python 文档,并查看 Python 绑定中提供的示例,这将帮助您开始使用 Python 访问手部跟踪数据。>

要解决您的问题,您需要等到控制器告诉您框架已准备就绪。这可以通过扩展 Leap.Listener 类并使用 controller.add_listener(my_listener) 将其附加到控制器来声明事件侦听器来实现。

class SampleListener(Leap.Listener):
    def on_init(self,controller):
        pass
    def on_connect(self,controller):
        pass
    def on_disconnect(self,controller):
        # Note: not dispatched when running in a debugger.
        pass
    def on_exit(self,controller):
        pass
    def on_frame(self,controller):
        # Get the most recent frame and report some basic information
        frame = controller.frame()
        # do things with the frame
...
# Create a sample listener and controller
listener = SampleListener()
controller = Leap.Controller()
# Have the sample listener receive events from the controller
controller.add_listener(listener)

如果您不想使用侦听器和事件,那么我建议您查看文档 here 的这一部分,其中显示了与上述相同的代码片段,但指出程序应该“等到 Controller .isConnected() 计算结果为 true”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。