在MATLAB中绘制任意数量的图像

时间:2014-03-26 14:06:25

标签: matlab text

我想绘制随机数量的图像。意味着我搜索了与我的查询相关的图像,根据给出的查询,图像可以是5,6或更多。有没有办法根据匹配的图像数量自动绘制它们。

到目前为止,这是我的代码:

for k = 1:length(textfiles) 
    file = [sdirectory '/' textfiles(k).name]; 
    file1 = [sdirectory1 '/' imgfiles(k).name]; 
    fid=fopen(file,'r'); 
    tline = fgetl(fid); 

    while ischar(tline) 
         line_string = sprintf('%s',tline); 
         x = get(handles.edit1,'String'); 
         u=strfind(line_string,x); 
         tline = fgetl(fid); 

         if u>0 
              file2=imread(file1); 
              figure,imshow(imresize(file2,0.5)),title(file1); 
              break; 
         end 
    end 
    fclose(fid); 
end

1 个答案:

答案 0 :(得分:1)

您可以将它们连接成多帧/多页图像(4D矩阵),并使用montage显示它们。

mframe = cat (4, img1, img2, img3);
montage (mframe)

由于您不知道要绘制的图像数量,因此可以先将它们全部放入单元格数组中:

mframe = cell (); % if you know in advance the number of images...
for ...
  ## whatever code you have to pick the right images
  mframe{end+1} = img;
endfor
mframe = cat (4, mframe{:});
montage (mframe)    

这假设图像大小相同,所有RGB或灰度,以及相同的类,如果不是,您可以使用padarray轻松填充它们,并使用{{将它们转换为同一个类1}},im2uint8等......