在matlab中写入文本文件

时间:2015-07-09 14:49:01

标签: matlab image-processing

我想对图像进行一些操作并将一些数据写入txt文件。这就是我正在为一个图像做的事情 -

clc;
image=imread('im.png');
.... %do some operations
....
....
fileID=fopen('first.txt','w');
....  %write onto the txt file
....
fclose(fileID);

但我想为许多图片做这件事。我已将所有图像存储在一个文件夹中。另外,我想在我离开之前的图像后立即继续写入同一文本文件。如何修改我的代码实现了这个目标?

1 个答案:

答案 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中的一个实际函数,它将值矩阵可视化为具有指定颜色映射的图像。您可能应该将此变量重命名为其他内容,以便在您编写的其他脚本/函数使用此函数时不会掩盖该函数。