2012-10-15 109 views
5

我想從使用OpenCV的USB攝像頭捕捉視頻。OpenCV不初始化USB攝像頭

#include <highgui.h> 
#include <iostream> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    VideoCapture cap (-1); 
    if (!cap.isOpened()) 
     cout << "Cam initialize failed"; 
    else cout << "Cam initialized"; 

    return 0; 
} 

它無法初始化相機。 cap.isOpened()返回零。

相同的程序,具有相同版本的OpenCV和相同的USB攝像頭,正在我朋友的機器上正常運行。我正在運行Fedora 16.相機在其他應用程序中正常工作(例如,Cheese)。

我在谷歌和堆棧溢出做了一些搜索。但沒有有用的幫助。 有什麼想法?

+1

您的相機在另一個應用程序中工作? – vfcosta

+0

你讀過這樣的: http://stackoverflow.com/questions/4749498/cant-access-webcam-with-opencv – james

+0

@vfcosta正如我前面提到的,相機工作正常與其他應用程序。我用它在奶酪,Kamoso和vlc。 – Barshan

回答

0

manual here說,VideoCapture::VideoCapture(int device)接受

設備:打開視頻捕捉設備(即,相機索引)的ID。如果連接一臺攝像機,只傳遞0

我想你應該改變-10,如果你在你的系統中有1個攝像頭。

+0

VideoCapture cap(0)也無法找到默認相機。傳遞-1,搜索所有可用的相機,因此比使用0更好。 – Barshan

1

嘗試以根用戶身份運行程序。你可能沒有權限,並且opencv不會告訴你這是否是cap.isOpened()失敗的原因。