2012-05-09 8 views
3

Я нахожусь в Linux Mint (не знаю версию) и использую веб-камеру Logitech Orbit AF. Я пробую следующий код, но все, что я получаю, это «ERROR: Capture is null!». Пожалуйста помоги!!!!!Opencv: cvCaptureFromCAM, возвращающий NULL

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

using namespace std; 

int main() { 
    //Data Structure to store cam. 
    CvCapture* cap=cvCaptureFromCAM(0); 
    //Image variable to store frame 
    IplImage* frame; 
    //Window to show livefeed 
    cvNamedWindow("LiveFeed",CV_WINDOW_AUTOSIZE); 
    if(!cap) 
    { 
     cout << "ERROR: Capture is null!\n"; 
    } 
    while(1) 
    { 
     //Load the next frame 
     frame=cvQueryFrame(cap); 
     //If frame is not loaded break from the loop 
     if(!frame) 
      break; 
     //Show the present frame 
     cvShowImage("LiveFeed",frame); 
     //Escape Sequence 
     char c=cvWaitKey(33); 
     //If the key pressed by user is Esc(ASCII is 27) then break out of the loop 
     if(c==27) 
      break; 
    } 
    //CleanUp 
    cvReleaseCapture(&cap); 
    cvDestroyAllWindows(); 

}

ответ

2

Когда этот вызов возвращает NULL:

CvCapture* cap = cvCaptureFromCAM(0); 
if (!cap) 
{ 
    // print error and exit 
    cout << "ERROR: Capture is null!\n"; 
    return -1; 
} 

это означает, что ни одно из устройств не было найдено по индексу 0. Попробуйте передать CV_CAP_ANY вместо этого, чтобы OpenCV выбрал для вас действительный номер индекса.

Если это не сработает, возможно, ваша камера не поддерживается OpenCV. Попробуйте найти его в this list.

+0

Исправлена ​​проблема. Просто не было установлено Qt – Smileyface

+1

Вы пытались это сделать в Windows? Это отстой, неспособный видеть отсутствующие зависимости во время выполнения. – karlphillip

+0

Я использовал Linux ... – Smileyface

0

Я заметил, что последняя версия opencv не работает для меня (2.4.9). Я установил 2.3, и это волшебство работает сейчас.

Смежные вопросы