如何从文件夹访问许多图像

时间:2013-08-01 16:13:12

标签: visual-c++ opencv image-processing computer-vision

我试图一次处理许多图片,然后将所有图片制作成相同的尺寸

Mat pic = imread ("C:\\Pick");
for (int i=0;i<10;i++)
{
 imshow("mainwin" , pick);
 resize (pick,re_pic,size(150,100));
}

Pick是一个包含10张不同图片的文件夹

1 个答案:

答案 0 :(得分:2)

您可以获取目录中的图像列表,然后进行处理。

    #include <vector>
    #include <stdio.h>
    #include <windows.h>
    #include <iostream>
    #include <string>

        using namespace std;
        //----------------------------------------------------------------------
        // Get list of files 
        // Usage:
        //  string ImagesDir=tmp+"C:\\Images\\*.jpg";
        //  vector<string> files=listFilesInDirectory(ImagesDir); 
        //----------------------------------------------------------------------
        vector<string> listFilesInDirectory(string directoryName)
        {
            WIN32_FIND_DATA FindFileData;
            HANDLE hFind = FindFirstFile(directoryName.c_str(), &FindFileData);

            vector<string> listFileNames;
            listFileNames.push_back(FindFileData.cFileName);

            while (FindNextFile(hFind, &FindFileData))
                listFileNames.push_back(FindFileData.cFileName);

            return listFileNames;
        }
...
// somewhere in main
string YourImagesDirectory="C:\\Pick\\";
vector<string> files=listFilesInDirectory(YourImagesDirectory+"*.jpg"); 
for(int i=0;i<files.size();i++)
    {
         Mat img=imread(YourImagesDirectory+files[i]);
         imshow("mainwin" , img);
         ...
    }
...