2012-04-26 38 views
0

我想設置一個簡單的程序來使用OpenKinect連接Kinect,並以某種方式測試通信到我的筆記本電腦。我可以運行的演示很好,但我想通過代碼來測試它,以確保我知道發生了什麼事情。到目前爲止,我仍然無法連接它。該代碼的現在 -OpenKinect - FreenectDevice摘要?

#include "/usr/local/include/libfreenect.hpp" 
#include <iostream> 
using namespace std; 
Freenect::FreenectDevice::FreenectDevice* device; 

int main(int argc, char** argv) { 
    Freenect::Freenect k; 
    device = &k.createDevice<Freenect::FreenectDevice>(0); //line 8 
    cout<<"\ndeviceCount:"<<k.deviceCount(); 
    return 0; 
} 

當我編譯,它告訴我

In member function ‘ConcreteDevice& Freenect::Freenect::createDevice(int) [with ConcreteDevice = Freenect::FreenectDevice]’: 
test_kinect.cpp:8: instantiated from here 

libfreenect.hpp:196: error: cannot allocate an object of abstract type ‘Freenect::FreenectDevice’ 

所以FreenectDevice是一個抽象類...好,我應該如何創建一個設備呢?我希望編寫自己的類,只要我想使用OpenKinect,就繼承這個類。我很困惑如何真正使用這個庫提供的代碼。我一直在尋找某種基本的教程,但一無所獲。如果有人知道一個好的教程,那現在對我來說是最好的。任何幫助表示讚賞,謝謝。

回答

0

嗯,是的,你需要繼承FreenectDevice並實現兩個回調函數(VideoCallbackDepthCallback),它們將接收Kinect註冊的視頻和深度信息。

示例的問題是在庫的生命週期中發生了API更改,因此它們可能不會全部與當前版本一起工作。對於工作示例代碼,您最好的選擇是OpenKinect Wiki的C++ wrapper section,它有兩個(有希望)當前樣本,以及012f包含在libfreenect本身的源代碼分發中。