我在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);
}
答案 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
}