2012-10-15 64 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()失败的原因。