2012-05-29 140 views
4

沒有啓動程序,我有一臺USB攝像頭連接到PC,我想用OpenCV來傳輸圖像。這裏是我的代碼:在C++中使用OpenCV流式傳輸來自攝像頭的視頻

#include <cv.h> 
#include <highgui.h> 
#include <stdio.h> 

int main() 
{ 

    CvCapture* cameraCapture = cvCaptureFromCAM(CV_CAP_ANY); 
    cvNamedWindow("Camera"); 

    while(1) 
    { 
     IplImage* frame = cvQueryFrame(cameraCapture); 
     cvShowImage("Camera", frame); 
     if((cvWaitKey(10) & 255) == 27) 
      break; 
    } 

    cvReleaseCapture(&cameraCapture); 
    cvDestroyWindow("Camera"); 
} 

的問題是,當我開始計劃我得到這個彈出錯誤:「應用程序無法正確(0xc0150002)啓動單擊確定關閉應用程序。」我確定我已經包含了所有正確的庫,頭文件和ddl,所以我真的不知道它有什麼問題。

任何幫助解決這個問題將不勝感激。

+0

嘗試在cvCaptureFromCAM和cvQueryFrame中添加一些錯誤檢查。不要總是那麼樂觀,他們確實會失敗。 –

+2

調試您的應用程序並找出哪條線路導致此錯誤。 – karlphillip

+1

嘗試從視頻中捕捉,如果這樣工作,那麼可能是相機的問題......兼容性... –

回答

4

我建議你使用OpenCV 2.3.1來嘗試這種處理相機的方式。

VideoCapture _videoSource; 
bool camera = 1; 

if(camera) 
{ 
    if(!_videoSource.open(0))    // Try to start camera. 0 = default camera 
    {          
    cout << "Error opening camera" << endl; // here you control why the error happens 
    exit(1);    // Exit if fail   
    } 
} 
else 
{ 
    if(!_videoSource.open(Path+"video.avi")) 
    { 
     cout << "Error opening file" << endl; 
     exit(2);      // Exit if fail 
    } 
} 
_videoSource.set(CV_CAP_PROP_CONVERT_RGB, 1); 

Mat frame; 
namedWindow("Image"); 

while(1) 
{ 
    _videoSource >> frame; 
    imshow("output", frame); 
    return 0; 
} 

如果失敗了,您會確定問題出在您的相機上。也許是司機。祝你好運。

相關問題