Edited at

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