2

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

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

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

4

2 回答 2

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;
}
于 2012-10-30T21:37:18.670 回答
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);
于 2012-11-01T07:45:12.570 回答