我已经安装了VS2008,并且能够运行opencv库中的演示代码“camshiftdemo和lkdemo”。完成后,我现在尝试从互联网上运行一些简单的代码,以熟悉OpenCV。我只是想从网络摄像头显示视频,我收到以下错误..
我得到的错误是:
0x5e7e3d10处的未处理异常 opencv.exe中的(highgui200.dll): 0xC0000005:访问冲突读取 位置0x719b3856。
我试图运行的代码是:
#include <cv.h>
#include <highgui.h>
void main(int argc,char *argv[])
{
int c;
IplImage* color_img;
CvCapture* cv_cap = cvCaptureFromCAM(-1); // -1 = only one cam or doesn't matter
cvNamedWindow("Video",1); // create window
for(;;) {
color_img = cvQueryFrame(cv_cap); // get frame
if(color_img != 0)
cvShowImage("Video", color_img); // show frame
c = cvWaitKey(10); // wait 10 ms or for key stroke
if(c == 27)
break; // if ESC, break and quit
}
/* clean up */
cvReleaseCapture( &cv_cap );
cvDestroyWindow("Video");
}
非常感谢任何帮助。
答案 0 :(得分:4)
以下代码使用OpenCV 2.1在VS2008中为我编译和工作
#include <cv.h>
#include <highgui.h>
void main(int argc,char *argv[])
{
int c;
IplImage* color_img;
CvCapture* cv_cap = cvCaptureFromCAM(0);
cvNamedWindow("Video",0); // create window
for(;;) {
color_img = cvQueryFrame(cv_cap); // get frame
if(color_img != 0)
cvShowImage("Video", color_img); // show frame
c = cvWaitKey(10); // wait 10 ms or for key stroke
if(c == 27)
break; // if ESC, break and quit
}
/* clean up */
cvReleaseCapture( &cv_cap );
cvDestroyWindow("Video");
}
答案 1 :(得分:1)
我认为你必须删除“cvReleaseCapture(&amp; cv_cap);”句子。我尝试过这个。它可以工作。不知何故,当您按下ESC按钮时,捕获正在被释放。值得一试。