从文件夹加载图像(使用C,OpenCV,Visual Studio 2008)

时间:2012-10-30 21:31:55

标签: c image visual-studio-2008 visual-c++ opencv

我正在尝试从文件夹加载图像,而我正在使用C,OpenCV,VC ++ 2008 Express Edition。我的图像位于桌面上,具有不同的名称,如Tom.jpg,Flash.jpeg等。 我想在我的程序中加载此文件夹中的图像,并一次一个地对图像进行一些实验,并将此实验的结果保存在.txt文件中,并且.txt文件的名称应与.txt文件的名称相同。 .jpeg文件。如在Tom.jpg上执行的实验数据应存储在Tom.txt中,Flash.jpg应存储在Flash.txt等中。

我可以为一个图像执行上述步骤(将图像加载到文本文件中并将其存储在文本文件中)。从我手动创建的文本文件中读取文件名后,我可以一个接一个地显示10个图像。但在这种情况下,不同图片的所有数据都存储在同一文本文件中,我无法区分不同的数据集。

任何人都可以建议一种方法从文件夹中加载一个图像,然后进行必要的实验并将数据存储在不同的.txt文件中并为1000张图像做同样的事情吗?

2 个答案:

答案 0 :(得分:0)

我希望你至少为主要处理创建了一个功能。如果你不这样做。然后,只需将图像列表作为参数传递给可执行文件,然后使用for循环

int main(int argc, char **argv) {
   for (int i = 1; i < argc; ++i) {
      const char* imageName = argv[i];
      process(imageName);
   }
 return EXIT_SUCCESS;
}

答案 1 :(得分:0)

这是我最终使用的代码:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v=vs.85).aspx

我做了一些修改。我通过了两个论点。我选择在同一个excel表中保存不同图像的数据,但这次我能够区分不同的数据集。首先是图像文件名,然后是数据

argv [1]是所有图像所在的目录 argv [2]是我想要的代码文件扩展名(在我的例子中是jpg)

// 用于扫描jpeg图像的文件夹

StringCchCopy(szDir, MAX_PATH, argv[1]);          
StringCchCat(szDir, MAX_PATH, TEXT("\\*."));      
StringCchCat(szDir, MAX_PATH, argv[2]);

hFind = FindFirstFile(szDir, &ffd);

do           
   {  
    //Loading the file from the folder and doing processing on it                 
    }    
while (FindNextFile(hFind, &ffd) != 0);