我在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();
}
答案 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并且现在神奇地工作了。