2014-05-14 71 views
1

下面的代碼無法打開一個VideoWriter對象:OpenCV的VideoWriter打不開文件

#include <iostream> 

#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 
using namespace std; 

int main() { 
    VideoWriter oVideo; 
    oVideo.open ("381.avi", -1, 30, Size(640,480), true); 
    if (!oVideo.isOpened()) { 
     cout << "Could not open the output video for write" << endl; 
     return -1; 
    } 

    return 0; 
} 

我跑的OpenCV 2.4.9預建與代碼::塊在Ubuntu 12.04。我在同一位置使用imwrite()寫了許多圖像,沒有問題,所以我懷疑它與權限有關。我也嘗試CV_FOURCC('X','V','I','D')哪些不起作用。

我在這裏錯過了什麼?

任何幫助,非常感謝。

+0

而不是-1,嘗試傳遞參數'CV_FOURCC('M','J','P','J')'。或'('M','P','E','G')'。 XVID可能不是您系統中的編解碼器。 –

+0

它會給你任何錯誤還是隻是說「無法打開輸出視頻進行寫入」?我直接複製了你的代碼,只把文件名改成了我的視頻,而且工作得很好。你試圖達到的最終目標是什麼 – Maggick

+0

-1應該給我一個彈出菜單嗎?這不會發生。另外,我現在嘗試了MJPJ,MPEG,PIM1,但是我得到了相同的結果。 – BdB

回答

0

確保您的機器中安裝了特定的編解碼器。

+2

似乎默認編解碼器(xvid,mjpj,mpeg,iyuv)和無壓縮(0或CV_FOURCC_DEFAULT)都不起作用,所以我懷疑這是一個編解碼器問題。可以肯定的是,我如何知道我的系統上安裝了哪些編解碼器? – BdB