本篇文章為大家展示了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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。