从.txt列表中读取图像

时间:2014-01-23 11:40:22

标签: c++ image opencv

我正在尝试使用imread在OpenCV C ++中读取图像。这里的问题是图像的文件名。文件名在文件名中包含.dot。例如,这里有一个名称样本:

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文件而不是+ line时,将来自终端imshow的打印字符串放入,imread就像魅力一样。

2 个答案:

答案 0 :(得分:4)

根据docsimread

  

...按内容确定图像的类型,而不是文件扩展名。

如果您收到错误,则不是您认为错误的原因。你需要更好地调查你所看到的并且没有告诉我们的任何内容。

答案 1 :(得分:2)

好的,我改变了读取txt文件的方式,一切正常。我使用infile代替getline而且一切正常。

 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 );
    }