我想寫一個視頻處理應用程序使用OpenCV 2.4.2(在Windows 7上的Visual C++ 2010 Express),但我有麻煩顯示某些AVI文件。大多數顯示正確,但是當我使用I420格式編碼的AVI文件時,我得到的每一幀都是條紋粉紅色圖像(它在正規媒體播放器中正確顯示)。OpenCV顯示AVI文件編碼I420
輸出顯示:http://i.imgur.com/BOu6c.png?1
目前,我使用的是C++ API,但是當我使用C API(代碼從該頁面:http://nashruddin.com/how_to_play_avi_files_with_opencv)同樣的事情發生。我覺得這很奇怪,因爲在本網站和網絡上的大多數答案中,他們明確推薦使用I420編碼。有誰知道什麼可能導致這個或如何解決它?
這裏是我使用的代碼的下調版本:
int main(int argc, char** argv){
string fname = "test.avi";
VideoCapture capture(fname);
if(!capture.isOpened()){
cerr << "error opening " << fname << endl;
return -1;
}
Mat frame;
namedWindow("output");
double rate = capture.get(CV_CAP_PROP_FPS);
int delay = 1000/rate;
while(true){
if(!capture.read(frame)) break;
cv::imshow("output", frame);
if(waitKey(delay) >= 0) break;
}
capture.release();
return 0;
}
我使用的是OpenCV中的預編譯的版本,如果有差別(http://sourceforge.net/projects/opencvlibrary /)。
您是否更新過系統編解碼器?錯誤的編解碼器可能會導致這種情況。 – karlphillip
我剛安裝了k-lite mega codec pack,它仍然在發生。 – jlh752
什麼是「延遲」值? – karlphillip