2012-02-20 99 views
3

我試圖做出的VideoCapture類的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示例)上檢查過我的設備,並確實打開。

有什麼想法?

+0

順便說一句'的#include '包括一切。如果你只想包含核心,'#include '或#including highgui是沒有必要的。 – 2012-11-01 23:31:45

回答

4

我從不嘗試像你一樣指定一個視頻捕捉。 請嘗試更換線:

cap = cv::VideoCapture(device_id); 

通過

cap.open(device_id); 
+0

謝謝,它的工作 – JohnnyAce 2012-02-20 20:25:24

+0

另外,cap.release()並不是必需的,因爲它將被釋放,並且您可以省去析構函數。 – 2012-11-01 23:27:53