Smileyface
Smileyface

Reputation: 71

Opencv: cvCaptureFromCAM returning NULL

I'm in Linux Mint (don't know the version) and am using a Logitech Orbit AF webcam. I try the following code, but all I get is "ERROR: Capture is null!" Please help!!!!!

#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(); 

}

Upvotes: 3

Views: 8414

Answers (2)

Waldo Bronchart
Waldo Bronchart

Reputation: 10532

I noticed the latest version of opencv didn't work for me (2.4.9). I installed 2.3 and it magically works now.

Upvotes: 0

karlphillip
karlphillip

Reputation: 93410

When this call returns NULL:

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

it means that no device was found at index 0. Try passing CV_CAP_ANY instead to let OpenCV select a valid index number for you.

If that doesn't work, it may be that your camera is not supported by OpenCV. Try to find it in this list.

Upvotes: 2

Related Questions