bugfix> matlab > 投稿

私は非常に単純であるはずの何かにこだわっています。

main_folder と言うフォルダがあります4つのサブフォルダーで、たとえば sub1sub2sub3 および sub4 それぞれに100を超える画像が含まれています。今、それらを読み取って配列に保存しようとしています。私はすべてのインターネットといくつかのMATLABドキュメントを見てきました: ここに、ここに そしてさらに公式文書。

私のコードは次のようなものです:

folder = 'main_folder/**'; %path containing all the training images
dirImage = dir('main_folder/**/*.jpg');%rdir(fullfile(folder,'*.jpg')); %reading the contents of directory
numData = size(dirImage,1);    %no. of samples
arrayImage = zeros(numData, 133183); % zeros matrix for storing the extracted features from images
for i=1:numData
        ifile = dirImage(i).name;
%         ifolder = dirImage(i).folder;
        I=imread([folder, '/', ifile]);  %%%% read the image  %%%%%
        I=imresize(I,[128 128]);
        ...

上記のスニペットのコードを試しても、画像は読み込まれません。 しかし、最初の2行を次のように置き換えた場合:

folder = 'main_folder/'; %path containing all the training images
dirImage = dir('main_folder/sub1/*.jpg'); %rdir(fullfile(folder,'*.jpg'));

次に、 sub1 のすべての画像読まれます。どうすれば修正できますか?どんな助けも大歓迎です。 4つのサブフォルダ内のすべての画像を一度に読みたいです。 MATLAB R2015aを使用しています。

回答 1 件
  • genpath を使用する必要があると思います  すべてのサブフォルダーを取得し、次のようにそれぞれをループします:

    dirs = genpath('main_folder/'); % all folders recursively
    dirs = regexp(dirs, pathsep, 'split'); % split into cellstr
    for i = 1:numel(dirs)
        dirImage = dir([dirs{i} '/*.jpg']); % jpg in one sub-folder
        for j = 1:numel(dirImage)
            img = imread([dirs{i} '/' dirImage(j).name]);
            % process img using your code
        end 
    end
    
    

あなたの答え