从文件夹加载图像(使用C、OpenCV、VisualStudio 2008)
我正在尝试从文件夹加载图像,我使用的是C、OpenCV、VC++2008 Express Edition。我的图像位于桌面上,有不同的名称,如Tom.jpg、Flash.jpeg等。 我想在我的程序中加载这个文件夹中的图像,每次对一个图像进行一些实验,并将实验结果保存在.txt文件中,.txt文件的名称应与.jpeg文件的名称相同。在Tom.jpg上执行的实验数据应存储在Tom.txt中,Flash.jpg应存储在Flash.txt等中从文件夹加载图像(使用C、OpenCV、VisualStudio 2008),c,image,visual-studio-2008,visual-c++,opencv,C,Image,Visual Studio 2008,Visual C++,Opencv,我正在尝试从文件夹加载图像,我使用的是C、OpenCV、VC++2008 Express Edition。我的图像位于桌面上,有不同的名称,如Tom.jpg、Flash.jpeg等。 我想在我的程序中加载这个文件夹中的图像,每次对一个图像进行一些实验,并将实验结果保存在.txt文件中,.txt文件的名称应与.jpeg文件的名称相同。在Tom.jpg上执行的实验数据应存储在Tom.txt中,Flash.jpg应存储在Flash.txt等中 StringCchCopy(szDir, MAX_PATH
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);
我可以为一个图像执行上述步骤(加载图像并将其数据存储在文本文件中)。从手动创建的文本文件中读取文件名后,我可以一个接一个地显示10个图像。但在这种情况下,不同图片的所有数据都存储在同一个文本文件中,我无法区分不同的数据集
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);
有谁能建议一种方法,一次从文件夹中加载一幅图像,并进行必要的实验,将数据存储在不同的.txt文件中,然后对1000幅图像执行相同的操作?我希望您至少为主处理创建了一个函数。如果你不知道,就去做。然后,将图像列表作为参数传递给可执行文件,并使用for循环
int main(int argc, char **argv) {
for (int i = 1; i < argc; ++i) {
const char* imageName = argv[i];
process(imageName);
}
return EXIT_SUCCESS;
}
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);
int main(int argc,char**argv){
对于(int i=1;i
以下是我最终使用的代码:
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);
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);
我做了一些修改。我对它提出了两个论点。我选择将不同图像的数据保存在同一张excel表格中,但这次我能够区分不同的数据集。首先是图像文件名,然后是其数据
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);
argv[1]是所有图像所在的目录
argv[2]是我希望在代码中使用的文件扩展名(在我的例子中是jpg)
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);
//用于扫描文件夹中的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);
仅供参考,如果您只想处理与特定模式匹配的所有文件(例如,
*.jpeg
),而不必在文本文件中手动指定所有文件,您还可以使用/枚举目录的内容。是的,您的想法很好。我能够扫描我的文件夹中的所有图像。谢谢雷米的建议。我没有使用我的图片列表。我用亚当的想法扫描整个文件夹中的图像