2014-01-09 43 views
0

我已經編寫了一個程序來使用opencv顯示存儲的視頻文件。我附上了下面的代碼。構建它時我沒有收到任何錯誤,但沒有顯示輸出。在opencv中播放視頻:無錯誤無輸出

int main(int argc, char *argv[]) 
    { 
       if (argc <= 1) 
       { 
         printf("Usage: %s video\n", argv[0]); 
         return -1; 
       } 


       VideoCapture capture(argv[1]); 
       namedWindow("display",cv::WINDOW_AUTOSIZE); 

       capture.set(cv::CAP_PROP_FRAME_WIDTH, 640); 
       capture.set(cv::CAP_PROP_FRAME_HEIGHT, 480); 


       if(!capture.isOpened()) 
       { 

           printf("Failed to open the video\n"); 
           return -1; 
       } 

       int i; 

       for(i=0;i<390;i++) 
       { 
          Mat frame; 


          capture >> frame; // get a new frame from camera 

          cout << "frame =" << endl << " " << frame << endl << endl; 
          imshow("display",frame); 
       } 

       } 

我包括在最後的cout線,以檢查是否該幀得到任何值或沒有。因此,矩陣中有許多值,但視頻窗口沒有出現。

回答

2

您必須在imshow之後使用waitKey添加非常小的延遲。

imshow("display",frame); 
waitKey(10); //Wait 10 milliseconds before showing next frame. 
+0

謝謝你的答案窗口正在顯示..是任何方式來存儲每個幀作爲圖像。我用imwrite,但只有最後一幀被存儲。 –

+0

你是否對每個imwrite使用相同的文件名? – Micka

+0

@wireless_lab ...檢查我的答案[這裏](http://stackoverflow.com/a/14620111/1231073)。這可能有幫助。 – sgarizvi