在OpenCV中显示来自网络摄像头的视频

时间:2010-04-15 22:27:54

标签: c opencv

我已经安装了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");
}

非常感谢任何帮助。

2 个答案:

答案 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按钮时,捕获正在被释放。值得一试。