0

私はMファイルを書きました。このMファイルを複数のイメージで実行してから、個別に名前を付けて出力.tifイメージを書き込みたいと思います。これを行う簡単な方法はありますか?

みんなありがとう

4

1 に答える 1

1

ベスト プラクティスは、関数を記述することです。

function img( inputName, outputName )

    if ~iscell(inputName)
         img( {inputName}, {outputName} ); 
            return; 
    end   

    for ii = 1:numel(inputName)

        im = imread(inputName{ii});

        ...

        [do operations on im]

        ...

        imwrite(im, outputName{ii}, 'tiff');

    end

end

次のように、スクリプト、クラス、関数、またはコマンド ウィンドウから呼び出すことができます。

img(...
    {'file1.bmp', 'file2.bmp', ...},...
    {'file1.tif', 'file2.tif', ...}...
);

次のように入力ファイル名を取得できます。

[filename, pathname] = uigetfile( ...
   {'*.bmp','bitmap-files (*.bmp)'; ...
    '*.*',  'All Files (*.*)'}, ...
    'Pick a file', ...
    'MultiSelect', 'on');

あなたが使用できるように

if filename ~= 0
    img(...
        [char(pathname) char(filename)],
        {'file1.tif', 'file2.tif', ...}...
    );
else
    error('No file selected.');
end

これは、入力ファイル名をより適切にリサイクルできることをすでに示しています。

function img( fileNames )

    ... % function's mostly the same, except: 

    [pth,fname] = fileparts(fileNames{ii});

    imwrite(im, [pth filesep fname '.tif'], 'tiff');

end

または、 を使用する際の利便性を高めるためにuigetfile

if filename ~= 0
    img(pathname, filename);

else
    error('No file selected.');
end

function img( pathnames, filenames)

    if ~iscell(pathnames)
         img( {pathnames}, {filenames} ); 
            return; 
    end   

    for ii = 1:numel(pathnames)

        im = imread([pathnames{ii} filenames{ii}]);

        ...

        [do operations on im]

        ...

        [~,basename] = fileparts(filenames{ii});
        imwrite(im, [basename '.tif'], 'tiff');

    end

end
于 2012-11-19T10:42:32.577 に答える