OpenKinect c ++ - Freenect :: Freenect freenect

时间:2011-10-17 13:17:06

标签: c++ kinect

我对OpenKinect提供的代码有疑问。我正在尝试使用Kinect和c ++,但是我得到了这个错误。在网上已经有人提出这个问题,但我找不到合适的答案。代码是这样的:

#include <cstdlib>
#include "libfreenect.h"
#include "libfreenect.hpp"
#include <pthread.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <cmath>
#include <vector>
#if defined(__APPLE__)
#include <GLUT/glut.h>
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#endif

using namespace std;

class Mutex {
    ...
};

class MyFreenectDevice : public Freenect::FreenectDevice {
    public:
    MyFreenectDevice(freenect_context *_ctx, int _index)
    : Freenect::FreenectDevice(_ctx, _index),
               m_buffer_depth(freenect_find_video_mode(FREENECT_RESOLUTION_MEDIUM, FREENECT_VIDEO_RGB).bytes),
               m_buffer_video(freenect_find_video_mode(FREENECT_RESOLUTION_MEDIUM, FREENECT_VIDEO_RGB).bytes),
               m_gamma(2048),
               m_new_rgb_frame(false),
               m_new_depth_frame(false)
    {
        for (unsigned int i = 0; i < 2048; i++) {
            float v = i / 2048.0;
            v = std::pow(v, 3) * 6;
            m_gamma[i] = v * 6 * 256;
        }
    }
    ...

    private:
    std::vector<uint8_t> m_buffer_depth;
    std::vector<uint8_t> m_buffer_video;
    std::vector<uint16_t> m_gamma;
    Mutex m_rgb_mutex;
    Mutex m_depth_mutex;
    bool m_new_rgb_frame;
    bool m_new_depth_frame;
};

Freenect::Freenect freenect;
MyFreenectDevice* device;
freenect_video_format requested_format(FREENECT_VIDEO_RGB);
...

我收到指令Freenect::Freenect freenect;的错误无法解析标识符标识符freenect

此模板的代码位于libfreenect.hpp代码中:

class Freenect : Noncopyable {
  private:
    typedef std::map<int, FreenectDevice*> DeviceMap;
  public:
  ...
    template <typename ConcreteDevice>
    ConcreteDevice& createDevice(int _index) {
        DeviceMap::iterator it = m_devices.find(_index);
        if (it != m_devices.end()) delete it->second;
        ConcreteDevice * device = new ConcreteDevice(m_ctx, _index);
        m_devices.insert(std::make_pair<int, FreenectDevice*>(_index, device));
        return *device;
    }
    ... 
}

我不知道问题是什么,这是官方代码,它应该有效..任何建议?提前谢谢

0 个答案:

没有答案