在matlab处理中,有时候会循环计算和处理数据,每一步都会得到新的结果,我们需要将每一步的结果写入到.xlsx文件中。
例:读取一个文件夹内100张图,分别计算其R、G、B三个通道的平均值,然后将平均值记录下来。
比如:将循环处理的New_RGB值写入到一个新的文件中a.xlsx
代码:
% 获取RGB的平均值
clc;
close all;
tic;
% 读取数据
file_path = '.\10X10\ave_blums\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.jpg'));
%dir 列出当前文件夹中的文件信息
img_num = length(img_path_list)%获取图像总数量
fprintf('正在读取的图像为:\n');
% 读取准备写入数据的excel
mark = xlsread('.\10X10\ave_blums\待处理数据.xlsx'); %随便读取一个都行
t=1; %循环写入的标志位
if img_num > 0 %有满足条件的图像
for j = 1:img_num %逐一读取图像
img_name = [file_path,int2str(j),'.jpg'];
pitch=imread(img_name);%多色通道的
fprintf('第%02d个:%s\n',j,img_name);
Wid = size(pitch,2);
Hig = size(pitch,1);
pixel_num = Wid * Hig;
R = double(pitch(:,:,1));
G = double(pitch(:,:,2));
B = double(pitch(:,:,3));
R_num=0;G_num=0;B_num=0; %加值初始化
% 处理数据
for i = 1:Hig
for j = 1:Wid
R_num = R(i,j)+R_num;
G_num = G(i,j)+G_num;
B_num = B(i,j)+B_num;
end
end
disp('------------');
R_num;
mid_R = ceil(R_num ./ pixel_num);
G_num;
mid_G = ceil(G_num ./ pixel_num);
B_num;
mid_B = ceil(B_num ./ pixel_num);
Nuw_RGB = [mid_R mid_G mid_B]
mark(t,:) = Nuw_RGB;
t=t+1;
end
end
xlswrite('.\10X10\ave_blums\写出数据.xlsx',mark);
toc;
=========================================END ======