我正在尝试使用Opencv从网络摄像头捕获视频。
我有以下代码
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <cstdio>
#include <iostream>
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap;
}
导致程序以错误
终止处理终止,状态为-1073741510(0分34秒)
我想知道我是否在codeblocks上没有正确安装opencv
请注意,当我使用此程序时,一切正常
CvCapture* capture = cvCaptureFromCAM( CV_CAP_ANY );
if ( !capture )
{
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}
IplImage* frame = cvQueryFrame( capture );
cvNamedWindow( "mywindow", CV_WINDOW_AUTOSIZE );
while ( 1 )
{
frame = cvQueryFrame( capture );
if ( !frame )
{
fprintf( stderr, "ERROR: frame is null...\n" );
getchar();
break;
}
cvShowImage( "mywindow", frame );
if ( (cvWaitKey(10) & 255) == 27 )
break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "mywindow" );
return 0;
修改
将标题更改为hpp文件也会产生同样的问题
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <cstdio>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap;
cap.open(1);
return 0;
}
答案 0 :(得分:3)
编译和运行的程序使用OpenCV 1.x,而不包含OpenCV 1.x的程序中包含的标题。如果您希望它能够运行,您需要安装此版本的OpenCV。
答案 1 :(得分:1)
您需要包含:
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
而不是
#include "cv.h"
#include "highgui.h"
C和C ++标头不应包含在同一个OpenCV项目中。最后,它应该是这样的:
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <cstdio>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap;
}