路径检索如何使用imread和imwrite工作?

时间:2009-04-17 18:10:49

标签: matlab image

我知道imreadimwrite是如何工作的,但我不知道函数从哪里调用图像文件?换句话说,我在哪里存储图像以便使用imread调用它?

5 个答案:

答案 0 :(得分:5)

由于Adam建议你可以将Matlab工作目录更改为图像的位置,或者我倾向于让用户选择要使用uigetfile

>> [fn,pn]=uigetfile({'*.TIFF,*.jpg,*.bmp','Image files'}, 'Select an image');
>> I = imread(fullfile(pn,fn));

或者如果您知道要阅读的图像的目录,则可以将其存储在变量中,然后使用dir

获取该目录中的图像列表
>> imageDir = 'c:\path\to\my\images';
>> imageList = dir(fullfile(imageDir,'*.tif')); % store all files with extension tif  
                                               % in a structure array imageList

从那里你可以遍历imageList并处理找到的每个图像。最后, 您可以使用uigetdir向用户询问包含图像集的目录。

答案 1 :(得分:2)

您可以将绝对和相对文件路径传递给IMREAD和IMWRITE。例如,绝对路径为:

filePath = 'C:\mywork\matlab\images\picture1.jpg';

如果您已将MATLAB中的当前工作目录更改为“C:\ mywork \ matlab”,则相对路径(相对于当前目录的)将为:

filePath = 'images\picture1.jpg';

此外,还需要考虑的另一件事是您的路径字符串在不同平台上的工作情况。例如,Windows相对路径为:

filePath = 'toolbox\matlab\iofun';

但UNIX的相对路径是:

filePath = 'toolbox/matlab/iofun';

注意一个使用反斜杠,一个使用正斜杠。为了确保您的代码可以跨多个平台工作,我会查看这些MATLAB函数来处理文件路径(仅举几例):FULLFILEFILEPARTSFILESEP。< / p>

答案 2 :(得分:1)

默认情况下imread()查找当前工作目录中的图像。一个非常明智的做法是给imread每个图像的绝对路径。

假设你在Windows上,你可以这样做:


imdir = 'C:\myproject\images\';
imfile1 = 'image1.jpg';
imfile2 = 'image2.jpg';

im1 = imread([imdir, imfile1]); im2 = imread([imdir, imfile2]);

这样,如果您决定将图像移动到另一个目录,则只需更改代码的一行。

答案 3 :(得分:1)

其他回复讨论了matlab将在当前目录中查找要加载的任何文件的想法。

如果您不确定当前目录是什么,请在命令提示符下键入

pwd

这将返回当前目录。命令cd在没有参数的情况下也会显示当前目录名。 cd也可以帮助您在适当的时候移动到不同的目录。当然,如果您不确定目录中这些文件的名称,dir会帮助您。

如果您更喜欢使用目录堆栈,pushd和popd是很好的下载功能。

http://www.mathworks.com/matlabcentral/fileexchange/8103

如果matlab找不到有问题的文件,并且你没有指定绝对路径,也许是由uigetfile生成的,那么它将查看搜索路径上的其他目录。另外一个想法是,如果您经常要从特定目录加载文件,只需将该目录添加到搜索路径即可。 addpath,rmpath,savepath和pathtool都是有用的工具。

答案 4 :(得分:0)

cd显示当前的工作目录。将文件放在那里。

或者,将目录更改为您想要的目录:

www.mathworks.com/access/helpdesk/help/techdoc/ref/cd.html