6

ディレクトリに特定の画像があり、それらすべての画像を読み込んで処理を行いたい。load関数を使ってみました。

imagefiles = dir('F:\SIFT_Yantao\demo-data\*.jpg');      
nfiles = length(imagefiles);    % Number of files found
 for i=1:nfiles
 currentfilename=imagefiles(i).name;
 I2 = imread(currentfilename);
 [pathstr, name, ext] = fileparts(currentfilename);
 textfilename = [name '.mat'];
fulltxtfilename = [pathstr textfilename];
load(fulltxtfilename);
descr2 = des2;
frames2 = loc2;
do_match(I1, descr1, frames1, I2, descr2, frames2) ;
end

xyz.jpgを読み取れず、そのようなファイルまたはディレクトリが見つからないというエラーが発生します。ここで、xyzはそのディレクトリ内の最初の画像です。
また、jpgだけでなく、ディレクトリからすべての形式の画像をロードしたいのですが、どうすればよいですか?

4

4 に答える 4

10

次のように、同じタイプの複数の画像を簡単に読み込むことができます。

function Seq = loadImages(imgPath, imgType)
    %imgPath = 'path/to/images/folder/';
    %imgType = '*.png'; % change based on image type
    images  = dir([imgPath imgType]);
    N = length(images);

    % check images
    if( ~exist(imgPath, 'dir') || N<1 )
        display('Directory not found or no matching images found.');
    end

    % preallocate cell
    Seq{N,1} = []

    for idx = 1:N
        Seq{d} = imread([imgPath images(idx).name]);
    end
end
于 2013-03-27T11:18:58.033 に答える
2

imreadではなく、関数が必要だと思いますloadドキュメントを参照してください。

于 2013-03-27T10:26:39.900 に答える
1

フルパス(ディレクトリを含む)はimgfiles.nameに保持されておらず、ファイル名だけが保持されているため、どこを見ればよいかを指定していないため、ファイルを見つけることができません。ディレクトリを変更したくない場合は、ファイルを読み取るときにもう一度fullfileを使用してください。

また、画像を読み取るために間違った関数を使用しています-imreadを試してください。その他の注意事項:変数にiを使用しないことをお勧めします。ループは、すべてのステップでI2を上書きするため、4つではなく1つの画像になります。

于 2013-03-27T10:27:20.487 に答える
1

Computer VisionSystemToolboxでimageSetオブジェクトを使用できます。指定されたディレクトリから画像ファイル名をロードし、画像を順番に読み取る機能を提供します。また、サブディレクトリに再帰するオプションもあります。

于 2016-01-14T14:51:57.487 に答える