Opencv:cvCaptureFromCAM返回NULL

时间:2012-05-09 21:52:29

标签: c++ opencv video webcam

我在Linux Mint(不知道版本)并使用Logitech Orbit AF网络摄像头。我尝试以下代码,但我得到的是“错误:捕获是空的!”请帮忙!!!!!

#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 个答案:

答案 0 :(得分: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中找到它。

答案 1 :(得分:0)

我注意到最新版本的opencv对我不起作用(2.4.9)。我安装了2.3并且现在神奇地工作了。