2

画像を読み込もうとしていますが、エラーメッセージが表示されていますUndefined function or method 'readimage' for input arguments of type 'char'.

私の呼び出し関数はここにあります

 h=uicontrol(FigWin,...
 'Style','pushbutton',...
 'Position',[0,320,80,20],...
 'String','Load',...
 'Callback',...
 ['image1=loadimage;'...
 'subplot(AxesHandle1);'...
 'imagesc(image1);'...
 'title(textLoad);'...
 'colormap(gray);']);

私が呼び出した関数は以下のとおりです

function image1=loadimage
    [imagefile1 , pathname]= uigetfile('*.bmp;*.BMP;*.tif;*.TIF;*.jpg','Open An Fingerprint image'); 
    if imagefile1 ~= 0 
        cd(pathname);
        image1=readimage(char(imagefile1));
        image1=255-double(image1);
    end
end

別の質問ですが、プログラムに警告がある場合、それは問題ですか?申し訳ありませんが、Matlabは初めてです。ありがとうございました。

4

2 に答える 2

2

これはパスの問題としてのみ再現できました。

問題は、ほぼ確実readimage.mにパス上にないことですが、代わりに、テスト元の現在のディレクトリにあります。今のところ最も簡単な解決策はimread、ストレートラッパーの代わりに直接使用することですが、後でreadimage機能を追加したいと仮定します。readimage

簡単な解決策は、ディレクトリreadimage.mをパスに追加することです([ファイル]->[パスの設定]->[フォルダーの追加]->[readimage.mでディレクトリを参照])。ただし、これが実際に問題であることをテストする場合は、手動で実行できることを確認してreadimage('existing_image.jpg')から(つまり、そのディレクトリを参照する必要があります)、次の変更されたコードを実行します。

function image1=loadimage
    [imagefile1 , pathname]= uigetfile('*.bmp;*.BMP;*.tif;*.TIF;*.jpg','Open An Fingerprint image'); 
    if imagefile1 ~= 0 
        image1=readimage([pathname imagefile1]);
        image1=255-double(image1);
end;

元のコードとの唯一の違いは、cd(pathname)を使用してディレクトリを変更するのではなく、readimageコマンド自体に組み込むことです。

cd()コマンドとパス上にない組み合わせを組み合わせて、readimage(w)がパス上にあり、実際に現在のディレクトリにあるときに機能していると思わせることは間違いありません...までcd()コマンドが実行されました。

于 2012-07-02T14:02:21.160 に答える
0

関数を少し書き直します。

function img = loadimage()
    [fname,pname] = uigetfile('*.bmp;*.tif;*.jpg', 'Open Fingerprint image');
    if pname==0, error('no file selected'); end

    img = imread( fullfile(pname,fname) );
    img = 255 - double(img);
end
于 2012-07-02T15:21:03.373 に答える