2016-04-30 6 views
0

私はこの文章を持っていますcolorImage = imread(uigetfile('*.jpg;*.tif;*.png;*.gif'));私のコンピュータから画像を選択します。uigetfileを使用するとエラーをキャッチする方法はありますか? [MATLAB]

キャンセルボタンを押すとエラーが表示されるという問題があります。キャンセルを押したときにエラーをキャッチするにはどうすればよいですか?

ありがとうございます。

答えて

0

Matlabのメカニズムを使用してください。 例:

try 
colorImage = imread(uigetfile('*.jpg;*.tif;*.png;*.gif')); 
catch ME 
    if (strcmp(ME.identifier,'MATLAB:imagesci:imread:badImageSourceDatatype')) 
     %do something 
    end 
end 
+1

識別子は「MATLAB:imagesci:imread:badImageSourceDatatype'です。とにかくありがとう;) –

+1

出力パラメータを指定せずに(OP命令のように)使用すると、関数uigetfileはファイル名だけを返します。そのため、選択したファイルが現在のディレクトリやMatLabパスのフォルダファイルを見つけることができません。より危険なのは、選択した名前のファイルが現在のフォルダまたはMatLAbパスのフォルダに存在する場合、そのファイルは選択したファイルの代わりに読み込まれます。 –

1

(あなたの命令のように)うちのパラメータのみfilename機能uigetfileリターンを指定せずに使用していました。

現在のディレクトリまたはMatLab pathのフォルダにない画像ファイルを選択した場合、imread関数は画像ファイルを見つけることができません。その場合は、imreadに完全なファイル名(パス+ファイル名)を指定する必要があります。

あなたは命令を分割し、その後、より良い持っている:中出力変数のclassfilename

  • をチェックして、あなたがそれを行う:

    • は、選択のためのuigetfile
    • チェックアボートした画像のファイル名を取得しますファイル選択の場合filenameclasschar
    • の場合選挙は、その場合にはuigetfileので、それはdoubleなり、中止することはメッセージ
    を印刷し、中止を選択した場合にfullfile
  • と画像完全なファイル名を構築し、有効な選択の場合は0
  • を返します。

    これは上記の手順の実装です。

    % Get the image full file name (path and filename) 
    [filename,pathname]=uigetfile('*.jpg;*.tif;*.png;*.gif') 
    % Check for selection abort 
    if(strcmp(class(filename),'char')) 
        % If an image has been selected, create the image full filename 
        the_img=fullfile(pathname,filename); 
        % Read the image 
        colorImage = imread(the_img) 
    else 
        % If the image selection has been aborted, print a message 
        disp('Image selection aborted') 
    end 
    
  • 関連する問題