0

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 クラスは抽象的です...では、どのようにデバイスを作成すればよいのでしょうか? OpenKinect を使用するときはいつでも、このクラスを継承する独自のクラスを作成する必要がありますか? このライブラリが提供するコードを実際に使用する方法について、私は非常に混乱しています。ある種の基本的なチュートリアルを探していましたが、何も見つかりませんでした。誰かが良いチュートリアルを知っていれば、それは私にとって今のところ最高のものです. どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

0

そうです、FreenectDevice を継承し、Kinect が登録するビデオと深度情報を受け取る2 つのコールバック (VideoCallbackと) を実装する必要があります。DepthCallback

例の問題は、ライブラリの存続期間中に API の変更があったため、すべてが現在のバージョンで動作するとは限らないことです。サンプル コードを実行するための最善の策は、OpenKinect WikiのC++ ラッパー セクションcppview.cppです。これには、2 つの (できれば) 現在のサンプルがあり、libfreenect 自体のソース配布に含まれています。

于 2012-04-26T20:23:35.637 に答える