您好,登录后才能下订单哦!
本篇文章为大家展示了MATLAB文件操作的实例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
%% 图片批量截取
clear;
% 初始化参数
picdir = '../data/images/' ; % 图片所在文件夹
picsave = '../result/'; % 截取图片保存文件夹
logfile = '../result/log.txt' ; % 日志文件所在路径
momentfile ='../result/moment.xls'; % 图片一阶矩存储路径
% ‘../’表示当前目录的上一级
%% 日志文件初始化
fileID = fopen(logfile,'a+'); % 以追加的方式添加日志信息
loginfo =[datestr(now) ' ' '日志初始化完成']; % 日志信息
fprintf(fileID,'%s\r\n',loginfo); % 写入日志信息
%% 图片名批量获取
inputfolder=dir(picdir);
isdirs=arrayfun(@(x) x.isdir,inputfolder);% 用匿名函数替代for循环
num=sum(isdirs==0);% 图片的数量
images=arrayfun(@(x) x.name,inputfolder, 'UniformOutput', false);
% 用匿名函数替代for循环,文件名字符串长度不统一需注意
images=images(isdirs==0); % 图片名
% 另一种获取方法
fileFolder=fullfile(picdir);
dirOutput=dir(fullfile(fileFolder,'*.jpg'));
images={dirOutput.name}';
% 日志记录
loginfo =[datestr(now) ' ' '图片所在文件夹为:' picdir ...
',一共有' num2str(num) '个图片'];
fprintf(fileID,'%s\r\n',loginfo);
%% 图片批量截取和保存
rows = size(images,1);
moment = zeros(rows,3); % 初始化一阶矩变量
for i= 1:rows
% 日志记录
loginfo =[datestr(now) ' ' '正在处理第' num2str(i) ...
'个图片,文件名为' images{i} ];
fprintf(fileID,'%s\r\n',loginfo);
imdata_i = imread([picdir images{i}]); % 读取图片文件
[width,length,z]=size(imdata_i);
subimage= imdata_i(fix(width/2)-50:fix(width/2)+50,...
fix(length/2)-50:fix(length/2)+50,:); % 图片截取
imwrite(subimage,[picsave images{i}]); % 保存图片
% 计算截取图片的一阶矩
subimage=im2double(subimage); % 数据转换
firstmoment= mean(mean(subimage));% 一阶矩
for j=1:3
moment(i,j)=firstmoment(1,1,j);
end
end
%% 保存数据 关闭日志文件
xlswrite(momentfile,moment); % 把一阶矩数据写入EXCEL文件
% 日志记录
loginfo =[datestr(now) ' ' '一阶矩数据已写入文件' ];
fprintf(fileID,'%s\r\n',loginfo);
fclose(fileID); % 关闭日志文件
上述内容就是MATLAB文件操作的实例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。