首页 > 学院 > 开发设计 > 正文

[matlab]利用MATLAB拼接指定文件夹中的所有的图像

2019-11-06 06:19:48
字体:
来源:转载
供稿:网友

下面的程序是将文件夹中所有的图像拼接在一起,例如文件夹中有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)效果:

原图是

最终的结果图:


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表