2012-10-15 14 views
5

Ich versuche, Video von einer USB-Kamera mit OpenCV zu erfassen.OpenCV initialisiert keine USB-Kamera

#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; 
} 

Die Kamera kann nicht initialisiert werden. cap.isOpened() gibt null zurück.

Das gleiche Programm, mit der gleichen Version von OpenCV und der gleichen USB-Kamera, läuft korrekt in der Maschine meines Freundes. Ich verwende Fedora 16. Die Kamera funktioniert ordnungsgemäß in einer anderen Anwendung (z. B. Cheese).

Ich habe einige Suche in Google und Stack Overflow. Aber keine nützliche Hilfe. Irgendeine Idee?

+1

Ihre Kamera funktioniert in einer anderen Anwendung? – vfcosta

+0

Haben Sie gelesen: http://stackoverflow.com/questions/4749498/cant-access-webcam-with-opencv – james

+0

@vfcosta Wie bereits erwähnt, funktioniert die Kamera gut mit anderen Anwendungen. Ich habe es in Cheese, Kamoso und VLC verwendet. – Barshan

Antwort

0

Die manual here sagt, dass die VideoCapture::VideoCapture(int device)

Gerät akzeptiert: id der geöffneten Videoerfassungsvorrichtung (das heißt ein Kamera-Index). Wenn es eine einzelne Kamera angeschlossen ist, geben Sie einfach 0.

Ich denke, Sie sollten die -1 zu 0 ändern, wenn Sie 1 Kamera in Ihrem System haben.

+0

VideoCapture Cap (0) kann die Standardkamera auch nicht finden. Passing -1, sucht nach allen verfügbaren Kameras, daher ist es besser als 0 zu verwenden. – Barshan

1

Versuchen Sie, Ihr Programm als root auszuführen. Sie haben möglicherweise keine Berechtigung und opencv sagt Ihnen nicht, ob dies der Grund ist, warum cap.isOpened() fehlgeschlagen ist.

Verwandte Themen