2010-04-15 103 views
3

我已经安装了VS2008,能够运行opencv库中的演示代码“camshiftdemo和lkdemo”。完成这个之后,现在我正尝试从互联网上运行一些简单的代码来熟悉OpenCV。我只是试图从网络摄像头显示视频,我收到以下错误..我得到在OpenCV中显示来自摄像头的视频

错误是:

在opencv.exe 0x5e7e3d10 (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"); 
} 

任何帮助,在此将不胜感激。

回答

3

下面的代码编译,并使用OpenCV的2.1

#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

我认为你必须删除在VS2008对我的作品 “cvReleaseCapture(& cv_cap);”句子。我尝试过这个。它可以是工作。不知何故,当你按下ESC按钮时,捕捉正在释放。值得尝试。