2010-04-15 105 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按鈕時,捕捉正在釋放。值得嘗試。