我正在尝试设置一个简单的程序来使用OpenKinect连接Kinect,并以某种方式测试与我的笔记本电脑的通信。我可以很好地运行演示,但我想通过代码来测试它,以确保我知道发生了什么。到目前为止,我仍然无法连接它。现在的代码是-
#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类是abstract...well,那么我该如何创建设备呢?每当我想要使用OpenKinect时,我是否需要编写自己的类来继承这个类?我对如何实际使用这个库提供的代码感到非常困惑。我一直在搜索一些基本的教程,但什么也没有找到。如果有人知道一个好的教程,那将是我现在最好的事情。感谢您的帮助,谢谢。
发布于 2012-04-27 04:23:36
是的,您需要继承FreenectDevice并实现两个回调函数(VideoCallback和DepthCallback),这两个回调函数将接收Kinect注册的视频和深度信息。
示例的问题是,在库的生命周期中,API发生了变化,因此它们可能并不都能与当前版本一起工作。最适合运行示例代码的是libfreenect Wiki的C++ wrapper section,它有两个(最好是)当前的示例,以及包含在OpenKinect本身的源代码发行版中的cppview.cpp。
https://stackoverflow.com/questions/10339791
复制相似问题