matlab图像集方法的读取顺序和图像名称?

时间:2015-11-10 09:45:45

标签: matlab matlab-figure dimensions

%% Load images from folder

% Use imageSet to manage images stored in multiple folders
imset = imageSet('pet_images','recursive');
% Preallocate arrays with fixed size for prediction
imageSize = cnnModel.net.normalization.imageSize;
trainingImages = zeros([imageSize sum([imset(:).Count])],'single');

% Load and resize images for prediction
for ii = 1:numel(imset)
    for jj = 1:imset(ii).Count
        imshow(read(imset(ii),jj)); 
        trainingImages(:,:,:,jj) = imresize(single(read(imset(ii),jj)),imageSize(1:2));

    end
end

我想从目录中读取图像。但它给了我一些错误的图像。

Assignment has fewer non-singleton rhs dimensions than non-singleton subscripts
  • 我使用断点查找哪个图像有问题。当它出错时,我会抓住图像的索引并显示该图像。

  • 我在此目录中找到此图片。它的订单是1061(订单根据名称),但jj的价值是1012。

我有三个问题。

  1. 为什么会出现此错误? ((错误)图像的分辨率: (263x380))
  2. 为了找到图像,我检查图像和相同的类型 猫。在for循环中,我可以获得此图像的名称吗?
  3. 当imageset读取目录时,根据读取内容 (姓名,类型,日期等......)?为什么行号(1061)和索引(1012) 不匹配?

1 个答案:

答案 0 :(得分:0)

  1. 如果图像为灰度,则会出错 因为rgb图像是trainingImages数组所期望的。
  2. 获取图片名称,您可以使用以下代码;

    imshow(read(imset(ii),jj));
    a = select(imset(ii),jj);
    str = cellstr(a(1,1).ImageLocation);
    title(str);
    
  3. 因为图像集按字母顺序排序但不同的方式(名称)例如。

    • 目录顺序:img1,img2,img3,... img9,img10,img11 ... img20,...
    • imageSet阅读顺序:img1,img2,img3,... img9,img10,img20 ... img21,...