Matlab中多个文件的读取操作:使用GUI同时打开和读取多个影像
欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/
前言
相信很多刚刚从事科学研究的朋友们都会遇到这个问题,在我们处理多个影像文件时,总是使用load或者imread函数来读取mat或tif等格式的影像,一个一个的导入使得程序显得笨拙,在更换实验数据后,总是需要对程序内部一些参数进行更改才能使用。
下面笔者分享一个智能化的GUI影像文件读取程序,希望能够帮助各位搞科研的朋友们!
1. fgetl、fgets、fread函数
- fgerl
功能: 从文件中读取一行数据,并去掉行末的换行符 - fgets
功能: 从文件中读取行,保留换行符 (换行符和回车符) - fread
功能: 以二进制形式,从文件读出数据
2. 使用GUI打开多个文件
matlab代码的编写风格和语言很简单,其实实现这个功能只需要一个命令即可,具体如下:
[filename, pathname, filterindex] = uigetfile( '*.*','Pick the file','MultiSelect', 'on');
运行效果如下:
3. GUI打开多个影像文件并进行读取操作
下面是利用上面的GUI程序读取多个影像文件,并对其进行后续操作的一个实例,可用用于参考,具体代码如下
clc;clear;close all;
[filename, pathname, filterindex] = uigetfile( '*.*','Pick the file','MultiSelect', 'on');
sz=size(filename);
for i=1:sz(2)
I=imread(strcat(pathname,filename{i})); % 读取文件
img=imresize(I,[64,64]); % 影像文件重采样
data(i,:)=img; % 将每个影像保存于矩阵data的每行
end
4. 文本的写入操作
下面给出文本的写入操作,程序中已经给出了注释,所以具体不在赘述。其中的 output_ZB 为需要存入文档的变量。
name_str='C:\Users\hzf\Desktop\ceshi.txt'
fid=fopen(name_str,'a+','n','UTF-8') ;%若返回的fid值大于0,则表示打开成功
for i=1:rows
fprintf(fid,'%s','filename');%文件名
fprintf(fid,'\n');
for j=1:4
if (j==4)%判断是否为最后一个坐标
fprintf(fid,'%.4f',output_ZB(i,j)); % 写入数据并添加字符串
fprintf(fid,'\n'); %换行
else
fprintf(fid,'%.4f',output_ZB(i,j)); % 写入数据并加入空格隔开
fprintf(fid,'%s',' '); % 空格
end
end
end
fclose(fid);
5. 利用textread函数批量读取txt中的文本
-
基本格式:
[A,B,C,…] = textread(filename,format)
[A,B,C,…] = textread(filename,format,N) -
具体代码如下:
ReadList1 =textread('buck_list.txt','%s','delimiter','\n');%载入正样本列表
- buck_list.txt 为文本文件
- delimiter 为格式,意思是指出分隔符,读数据的时候会自动跳过分隔符
- ReadList1 为读取的文件内容
具体操作结果如下: