C编程和OpenCV(如何从文件中读取图像并加载它以便在openCv中进一步处理)

时间:2015-03-22 22:55:10

标签: c file opencv

我在C中创建了一个包含图像文件的文件。代码如下(“Leaves”是图像的数据集。我将图像名称存储在文件中):

FILE *fp;

system("dir /B D:\\opencvprojects\\platphenotypeFinal\\platphenotypeFinal\\Leaves > file.txt");

file.txt如下所示:

1001.jpg

1002.jpg

1003.jpg

1004.jpg

1005.jpg

1006.jpg

1007.jpg

现在我想从文件中读取每个图像,在openCV中进行背景减法,并将所有这些图像的结果保存在另一个文件中。

OriginalImage=cvLoadImage("Leaves\\1007.jpg",CV_LOAD_IMAGE_GRAYSCALE);

我知道如何读取单个图像(使用上面的代码),但我想自动读取文件的每个图像,进行处理,并将结果保存到另一个文件中,并且该过程继续循环,直到因此,所有图像都将被处理。因此,将生成包含二进制图像的文件名(与输入文件名相同)的输出文件。

非常感谢您的帮助。

int main()
{
   CvMoments moments;

   CvMemStorage *connectedCompStorage = cvCreateMemStorage (0);

   CvSeq *temp = NULL;                              //used to loop through contour perimeter checking
   CvSeq *connectedComp = NULL;           

   FILE *fp;
   char buffer[9];

   system("dir /B D:\\opencvprojects\\platphenotypeFinal\\platphenotypeFinal\\Leaves > file.txt");
   fp = fopen ("file.txt", "r+");

   OriginalImage = cvLoadImage("Leaves\\1108.jpg",CV_LOAD_IMAGE_GRAYSCALE);
}

1 个答案:

答案 0 :(得分:1)

opencv有一个很棒的glob函数来读取整个目录:

(并且,请使用opencv' C-api!)

vector<String> files;
glob("D:\\opencvprojects\\platphenotypeFinal\\platphenotypeFinal\\Leaves\*.jpg", files);

for (size_t i=0; i<files.size(); i++)
{
    Mat m = imread(files[i]);
    // process image
}