2013年9月1日 星期日

【Leap Motion】C# Guides 常用功能程式碼

Leap Motion雖然沒有畫面,但他擷取的原理跟Cam很像,

所以SDK中是以Frame的方式取得,以下會介紹幾個常用的Function


  • 擷取Leap Motion的畫面資訊

if(controller.IsConnected) //檢查Leap Motion連結情況
{
Frame frame = controller.Frame(); //當下畫面
Frame previous = controller.Frame(1); //前一張畫面
}


//當你的處理速度比leap motion擷取速度快時
//你可以使用以下的方法確認是否已經處理完這一個畫面
Int64 lastFrameID = 0;
void processFrame( Frame frame )
{
if(frame.Id == lastFrameID) return;
lastFrameID = frame.Id;
}


  • Getting Frames by Polling 從歷史資訊撈資料

//想要擷取先前畫面的資訊,可以用controller.Frame(X)取得(當下畫面T-歷史畫面X)
//因為Buffer會暫存60個畫面的資訊
Int64 lastProcessedFrameID = 0;
void nextFrame(Controller controller)
{
Int64 currentID = controller.Frame().Id;
for( int history = 0; history < currentID - lastProcessedFrameID; history++)
{
processFrame(controller.Frame(history));
}
lastProcessedFrameID = currentID;
}



  • Getting Data from a Frame 取得畫面資料

Controller controller = new Controller ();//新增控制器
Frame frame = controller.Frame ();//取得畫面
HandList hands = frame.Hands;//取的手的資訊
PointableList pointables = frame.Pointables;//取得畫面中屬於尖頭的資訊
FingerList fingers = frame.Fingers;//取得手指頭資訊
ToolList tools = frame.Tools;



#Leap Motion新手學習,如果有解釋錯誤請糾正,謝謝!

0 意見:

張貼留言