Python
LeapMotion

PythonでLeapMotionのデータを取得する。

More than 1 year has passed since last update.

LeapMotionを使ってみたかったので、プログラムをPythonで書いてみました。
今回は、認識されている手の本数と、指の数を取得してみたいと思います。

開発環境

開発していく環境はこちらになっています。

  • Windows8.1(64bit)
  • Python 2.7.11

環境構築

まずLeapMotionを利用するためにはSDKが必要なので、developerサイトからSDKをダウンロードしてきます。
ダウンロードしてきたフォルダを解凍すると、LeapSDKというフォルダがあるので、その中のlibフォルダを開くと、Leap.pyのファイルとx64フォルダの中にある、Leap.dllとLeap.libを使用します。

ディレクトリ構成

今回のディレクトリ構成はこちらになります。

├─lib
│ └─x64
└─src

先ほどのLeap.pyをsrcの中に、Leap.dllとLeap.libをx64に配置します。

これでLeapMotionをpythonで扱うための準備は終わりです。

実行

srcフォルダの中にtest.pyを作成します。ファイルの内容は以下の通りです。

test.py
import sys
sys.path.insert(0,"../lib/x64")
import Leap
class SampleListener(Leap.Listener):
    def on_connect(self,controller):
        print "Connected"
    def on_frame(self,controler):
        frame = controler.frame()
        print "Frame id: %d, hands: %d,fingers: %d" %(frame.id,len(frame.hands),len(frame.fingers))
def main():
    listener = SampleListener()
    controller = Leap.Controller()
    controller.add_listener(listener)
    print "Press Enter to quit...."
    try:
        sys.stdin.readline()
    except KeyboardInterrupt:
        pass
    finally:
        controller.remove_listener(listener)
if __name__=="__main__":
    main()

それでは、test.pyを実行してみましょう。ファイルは何かキーが押されるまで、実行されるようになってます。

python test.py

実行すると、Frame idと認識されている手の数、指の数がそれぞれ表示されます。

実行結果
Frame id: 185744, hands: 2,fingers: 10
Frame id: 185745, hands: 2,fingers: 10
Frame id: 185746, hands: 2,fingers: 10
Frame id: 185747, hands: 2,fingers: 10
Frame id: 185748, hands: 2,fingers: 10
Frame id: 185749, hands: 1,fingers: 5
Frame id: 185750, hands: 1,fingers: 5
Frame id: 185751, hands: 0,fingers: 0
Frame id: 185752, hands: 0,fingers: 0
Frame id: 185753, hands: 0,fingers: 0
Frame id: 185754, hands: 0,fingers: 0
Frame id: 185755, hands: 0,fingers: 0

これで基本的なLeapMotionからのデータを取得することが出来ました。

以下は参考にしたサイトです。

1.https://developer.leapmotion.com/documentation/python/devguide/Project_Setup.html
2.https://developer.leapmotion.com/documentation/python/devguide/Sample_Tutorial.html