我想对图像进行一些操作并将一些数据写入txt文件。这就是我正在为一个图像做的事情 -
clc;
image=imread('im.png');
.... %do some operations
....
....
fileID=fopen('first.txt','w');
.... %write onto the txt file
....
fclose(fileID);
但我想为许多图片做这件事。我已将所有图像存储在一个文件夹中。另外,我想在我离开之前的图像后立即继续写入同一文本文件。如何修改我的代码实现了这个目标?
答案 0 :(得分:1)
那很简单。在所有图像上使用循环并循环,对其进行处理,然后附加到文本文件。更简单的是你只需打开文本ONCE,写入你的图像,然后最后关闭它。
这样的事情:
folder = ...; %// Place folder here - Example: folder = fullfile('D:', 'images');
fileID=fopen('first.txt','w'); %// Open up the file for writing
f = dir(fullfile(folder, '*.png')); %// look for all PNG files in this folder
for idx = 1 : numel(f)
filename = fullfile(folder, f(idx).name); %// Get the file name
im = imread(filename); %// Read the image in
.... %do some operations
....
....
.... %write onto the txt file
....
fprintf(fileID, '\n\n'); %// Put two carriage returns to make way for next file
end
fclose(fileID);
函数dir
扫描与特定表达式匹配的所有文件。在您的情况下,您想要在您选择的特定文件夹中查找所有PNG文件。我假设它存储在变量folder
中。然后,我们在对图像执行任何操作之前先打开文件,然后使用dir
遍历每个找到的图像。请注意,当您使用dir
时,它只会找到文件的相对路径(即只是名称本身)。如果要查找实际图像的位置,则需要绝对路径,这就是我们使用fullfile
的原因。
因此,对于文件夹中的每个PNG图像,将其加载,对其进行处理,写入文件并确保我输入两个回车以分隔每个结果。您为每个PNG图像重复此操作,直到从文件夹中耗尽所有这些图像。完成后,关闭文本文件。
image
是MATLAB中的一个实际函数,它将值矩阵可视化为具有指定颜色映射的图像。您可能应该将此变量重命名为其他内容,以便在您编写的其他脚本/函数使用此函数时不会掩盖该函数。