2014-02-20 60 views
0

我在閱讀opencv中的一系列圖像時遇到了問題。我使用相同的代碼:閱讀openCV中的一系列圖像

namedWindow("Source", CV_WINDOW_AUTOSIZE); 
string pathToData("OpenCV Images/checkerboard1.pgm"); 

VideoCapture sequence(pathToData); 

Mat src; 
for (;;) 
{ 
    sequence >> src; 
    if(src.empty()) 
    { 
     cout << "End of Sequence" << endl; 
     break; 
    } 
    imshow("Source", src); 
    waitKey(1000); 
} 
waitKey(0); 

我在窗口(visual studio)和linux中運行此代碼。在窗口中,程序顯示序列中的所有圖像,而在Linux中,程序僅以相同的順序顯示第一幅圖像。 此外,在窗口中,程序加載灰度圖像,而在lunix中,圖像加載顏色。實際上,我將圖像保存爲灰度。

這是openCV for window和linux操作系統的問題嗎?或者我需要做一些設置?或別的東西... 有人可以幫我弄明白嗎? 謝謝!

+1

afaik,那VideoCapture技巧需要一個適當的*格式*字符串,如:'string pathToData(「OpenCV Images/checkerboard%d.pgm」);' – berak

+0

很好。這是一個非常有用的技巧。非常感謝你! – Hnanhtuan

回答

0

pathToData包含文件名而不是路徑。該文件格式爲.pgm,表示圖像是灰度。

在我看來,你將不得不創建一個列表中存在的文件夾中的圖像名稱,並在以後逐一調用這些名稱。目前的代碼只會顯示checkerboard1.pgm圖片。或者你必須提供一個視頻文件作爲輸入,而不是圖像。