2014-01-05 55 views
0

我想運行一個程序來從OpenCV中的攝像頭捕獲視頻。每次運行該程序時,都會顯示一個灰色屏幕。我最初嘗試使用CvCapture函數在C API中編程,它工作得很好。但是現在在C++ API中,當我嘗試運行使用VideoCapture的以下代碼時,灰色屏幕正在顯示。在視頻捕獲過程中顯示灰色屏幕 - OpenCV

如何解決此問題?請幫忙。我的OpenCV版本是2.4.6,我正在MS Visual Studio 2010 Professional中運行代碼。

#include "opencv2/core/core.hpp" 
#include "opencv2/highgui/highgui.hpp" 
using namespace cv; 

int main(int argc, char** argv) 
{ 
    VideoCapture capture(0); 
    Mat frame; 

    if(!capture.isOpened()) 
     throw "Error when reading steam_avi"; 

    namedWindow("w", 1); 
    for(; ;) 
    { 
     capture.read(frame); 
     if(frame.empty()) 
      break; 
     imshow("w", frame); 
     waitKey(1); 
    } 

    waitKey(0); 
} 
+0

有沒有人知道這一點?我得到同樣的東西。 – luckyging3r

回答

1

您的代碼在筆記本電腦上運行良好。確保您的相機設備不被其他應用程序阻擋,或者您可以嘗試註釋掉namedWindow調用(但它不應該是一個問題),實際上您可以使用以下循環來抓取來自相機的視頻幀:

VideoCapture capture(0); 
Mat frame; 

if(!capture.isOpened()) 
    throw "Error when reading steam_avi"; 

namedWindow("w", 1); 
while(capture.read(frame)) 
{ 
    imshow("w", frame); 
    waitKey(1); 
} 

waitKey(0); 

根據文檔:「如果沒有抓取幀(相機已斷開連接,或視頻文件中沒有更多幀),則方法返回false,並且函數返回NULL指針。」