【问题标题】:OpenCV VideoCapture Wrapper ClassOpenCV VideoCapture 包装类
【发布时间】:2012-02-20 16:42:26
【问题描述】:

我正在尝试制作 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 示例)上检查了我的设备,它确实打开了。

有什么想法吗?

【问题讨论】:

  • 顺便说一句 #include &lt;opencv2/opencv.hpp&gt; 包括一切。如果您只想包含核心,则不需要#include &lt;opencv2/core/core.hpp&gt; 或#include highgui。

标签: opencv


【解决方案1】:

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

cap = cv::VideoCapture(device_id);

通过

cap.open(device_id);

【讨论】:

  • 另外,cap.release() 不是必需的,因为它无论如何都会被释放,并且你没有使用析构函数。
猜你喜欢
  • 2020-09-20
  • 2014-09-02
  • 2018-04-11
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 2017-04-01
  • 2015-06-02
  • 2018-03-02
相关资源
最近更新 更多