2012-10-15 13 views
5

Próbuję przechwycić wideo z kamery USB za pomocą OpenCV.OpenCV nie inicjuje kamery 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; 
} 

Nie można zainicjować aparatu. cap.isOpened() zwraca zero.

Ten sam program, z tą samą wersją OpenCV i tą samą kamerą USB, działa poprawnie na komputerze mojego przyjaciela. Używam Fedora 16. Aparat działa poprawnie w innej aplikacji (na przykład Cheese).

Zrobiłem kilka wyszukiwania w Google i przepełnienie stosu. Ale bez pożytecznej pomocy. Każdy pomysł?

+1

Twój aparat działa w innej aplikacji? – vfcosta

+0

Czytałeś to: http://stackoverflow.com/questions/4749498/cant-access-webcam-with-opencv – james

+0

@vfcosta Jak wspomniałem wcześniej, kamera działa dobrze z innymi aplikacjami. Użyłem go w serach, kamoso i vlc. – Barshan

Odpowiedz

0

manual here mówi, że VideoCapture::VideoCapture(int device) przyjmuje

urządzenia: identyfikator otwartym urządzenia przechwytywania wideo (to jest wskaźnik kamery). Jeśli jest tylko jeden aparat podłączony, po prostu przekazać 0.

myślę, że należy zmienić -1 do 0 jeśli masz 1 kamera w systemie.

+0

Ograniczenie VideoCapture (0) również nie pozwala znaleźć kamery domyślnej. Przekazanie -1 powoduje wyszukanie wszystkich dostępnych kamer, a więc lepsze niż użycie 0. – Barshan

1

Spróbuj uruchomić swój program jako root. Możesz nie mieć uprawnień, a opencv nie powie Ci, czy to spowodowało niepowodzenie cap.isOpened().

Powiązane problemy