我正在尝试加载图片,但它显示错误消息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的新手。谢谢。
答案 0 :(得分: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()命令运行。
答案 1 :(得分: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