下面的程序是将文件夹中所有的图像拼接在一起,例如文件夹中有80张图像,想要将这80张图像拼成8行10列的大图像。
clc,clear;p = genpath('');% 获得文件夹data下所有子文件的路径,这些路径存在字符串p中,以';'分割 length_p = size(p,2);%字符串p的长度 path = {};%建立一个单元数组,数组的每个单元中包含一个目录 temp = []; for i = 1:length_p %寻找分割符';',一旦找到,则将路径temp写入path数组中 if p(i) ~= ';' temp = [temp p(i)]; else temp = [temp '/']; %在路径的最后加入 '/' path = [path ; temp]; temp = []; end end clear p length_p temp; %至此获得data文件夹及其所有子文件夹(及子文件夹的子文件夹)的路径,存于数组path中。 %设置一些参数nb_row=8;nb_colum=10;%合并图像后nb_row行,nb_colum列IntervalBetweenImage=3;%两个小图像之间的间隔file_num = size(path,1);% 子文件夹的个数 reszie_width=100;resize_height=100;%下面是逐一文件夹中读取图像 for i = 1:file_num file_path = path{i}; % 图像文件夹路径 img_path_list = dir(strcat(file_path,'*.jpg')); img_num = length(img_path_list); %该文件夹中图像数量 p=0; if img_num > 0 for j = 1:img_num if(p==10) p=1; else p=p+1; end image_name = img_path_list(j).name;% 图像名 image = imread(strcat(file_path,image_name)); %image是要处理的图像 fPRintf('%d %d %s/n',i,j,strcat(file_path,image_name));% 显示正在处理的路径和图像名 %图像处理过程 省略 image=imresize(image,[reszie_width,resize_height]);%将图像归一化大小 all_image((1:reszie_width)+(reszie_width+IntervalBetweenImage)*(ceil(j/10)-1),... (1:resize_height)+(resize_height+IntervalBetweenImage)*(p-1),:)=image; end end end imshow(all_image)效果:原图是
最终的结果图:
新闻热点
疑难解答