OpenCV VideoCapture包装类

时间:2012-02-20 06:21:55

标签: opencv

我正在尝试创建OpenCV的VideoCapture类的“包装器”,但我无法正常工作,我的代码如下:

#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"

class wrapper
{
    private:
        cv::VideoCapture cap;
        int device_id;

    public:
        wrapper();
        ~wrapper();

        void setup(int _device_id);
};

// wrapper.cpp

wrapper::wrapper()
{
    device_id = 0;
}

wrapper::~wrapper()
{
    cap.release();
}

wrapper::setup(int _device_id)
{
    device_id = _device_id;
    cap = cv::VideoCapture(device_id);

    cout << "Checking device" << endl;
    if(!cap.isOpened())
    {
        cout << "Couldn't open device" << endl;
        return;
    }
    else
    {
        cout << "Device opened " << endl;
    }
}

问题是它无法打开设备。我已经在starter_video.exe(OpenCV示例)上检查了我的设备,它确实打开了。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我从不尝试像你那样分配视频捕捉。 请尝试替换该行:

cap = cv::VideoCapture(device_id);

通过

cap.open(device_id);