2014-01-23 107 views
1

我正在嘗試使用imread讀取OpenCV C++中的圖像。這裏的問題是圖像的文件名。文件名包含一個.dot文件名。例如這裏是名稱的一個示例:從.txt列表中讀取圖像

00006.jpg0.jpg 

怎麼可能讀這樣一個形象? 矢量文件;

 string line; 
     ifstream myfile ("Anny.txt"); 
     if (myfile.is_open()) 
     { 
     while (getline (myfile,line)) 
     { 
      cout << line << '\n'; 
      files.push_back(line); 
      string img ="db/video/"+line; 
      cout << img<< endl; 
      string dest = "db/video1/"+line; 
      Mat image = imread(img,1); 

      cout << image.rows << " " << image.cols << endl; 
      imshow("new", image); 
      waitKey(0); 
      imwrite(dest, image); 

     } 

     myfile.close(); 
     } 

編輯︰基本上錯誤在於getline,但我沒有得到它。當我更改img文件而不是+行時,將來自終端imshow的打印字符串和imread的作用像魅力一樣。

+0

這裏沒問題。甚至沒有'my.png.jpg' – berak

+0

'cv :: Mat image = cv :: imread(「00006.jpg0.jpg」);'對我來說工作正常 – Micka

+0

看來,當我讀它時,它會返回一個空的墊子文件。當我試圖在imshow中顯示結果時,我得到: OpenCV錯誤:斷言失敗(size.width> 0 && size.height> 0)在imshow中,文件/home/christosh/Desktop/OpenCV/opencv-2.4。 7/modules/highgui/src/window.cpp,第269行 在拋出'cv :: Exception'實例後終止調用什麼():/home/christosh/Desktop/OpenCV/opencv-2.4.7/modules/ highgui/src/window.cpp:269:error:(-215)size.width> 0 && size.height> 0在函數imshow中 –

回答

4

按照docsimread

... determines the type of an image by the content, not by the file extension.

如果您收到一個錯誤,它並不適合你所承擔的原因,它是。你需要更好地調查你所看到並沒有告訴我們的事情。

+0

恥辱對我來說,你是對的! –

4

好吧我改變了我閱讀txt文件的方式,一切正常。而不是getline我使用infile和一切正在工作。

ifstream infile("Anny.txt"); 
    string line; 
    while(infile>> line){ 
     string img ="db/video/"+line; //db/video/00006.jpg0.jpg 
     cout << img<< endl; 
     string dest = "db/video1/"+line; 
     Mat image = imread(img,1); 

     cout << image.rows << " " << image.cols << endl; 
     imshow("new", image); 
     waitKey(0); 
     imwrite(dest, image); 
    }