Matlab 如何使用imread和imwrite进行路径检索?
我知道Matlab 如何使用imread和imwrite进行路径检索?,matlab,image,Matlab,Image,我知道imread和imwrite是如何工作的,但我不知道该函数从何处调用图像文件?换句话说,为了使用imread调用图像,我将图像存储在何处?cd显示当前工作目录。把你的文件放在那里 或者,将目录更改为您首先需要的目录: 默认情况下imread()在当前工作目录中查找图像。一个非常明智的做法是为每个图像提供imread绝对路径 假设您在windows上,您可以执行以下操作: imdir='C:\myproject\images\'; imfile1='image1.jpg'; imfile2
imread
和imwrite
是如何工作的,但我不知道该函数从何处调用图像文件?换句话说,为了使用imread
调用图像,我将图像存储在何处?cd
显示当前工作目录。把你的文件放在那里
或者,将目录更改为您首先需要的目录:
默认情况下imread()
在当前工作目录中查找图像。一个非常明智的做法是为每个图像提供imread
绝对路径
假设您在windows上,您可以执行以下操作:
imdir='C:\myproject\images\';
imfile1='image1.jpg';
imfile2='image2.jpg'
im1=imread([imdir,imfile1]);
im2=imread([imdir,imfile2]);
这样,如果您决定将图像移动到另一个目录,您只需要更改代码的一行。建议您可以将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
向用户询问包含图像集的目录。其他回答讨论了matlab将在当前目录中查找任何要加载的文件的想法
如果不确定当前目录是什么,请在命令提示下键入
pwd
这将返回当前目录。命令cd在没有参数的情况下使用时,也将显示当前目录名。cd还可以帮助您在适当的时候移动到其他目录。当然,如果您不确定目录中这些文件的名称,dir将在这方面帮助您
如果您喜欢使用目录堆栈,pushd和popd是很好的下载函数
如果matlab没有找到有问题的文件,并且您没有指定绝对路径(可能是由uigetfile生成的),那么它将查看搜索路径上的其他目录。所以另一个想法是,如果您经常想从特定目录加载文件,您可以将该目录添加到您的搜索路径中。addpath、rmpath、savepath和pathtool在这里都是有用的工具。您可以将绝对和相对文件路径传递给IMREAD和IMWRITE。例如,绝对路径为:
filePath = 'C:\mywork\matlab\images\picture1.jpg';
filePath = 'images\picture1.jpg';
filePath = 'toolbox\matlab\iofun';
filePath = 'toolbox/matlab/iofun';
如果已将MATLAB中的当前工作目录更改为“C:\mywork\MATLAB”,则相对路径(相对于当前目录)将为:
filePath = 'C:\mywork\matlab\images\picture1.jpg';
filePath = 'images\picture1.jpg';
filePath = 'toolbox\matlab\iofun';
filePath = 'toolbox/matlab/iofun';
还有一件事要考虑的是你的路径字符串在不同的平台上工作得多好。例如,Windows相对路径为:
filePath = 'C:\mywork\matlab\images\picture1.jpg';
filePath = 'images\picture1.jpg';
filePath = 'toolbox\matlab\iofun';
filePath = 'toolbox/matlab/iofun';
但UNIX相对路径是:
filePath = 'C:\mywork\matlab\images\picture1.jpg';
filePath = 'images\picture1.jpg';
filePath = 'toolbox\matlab\iofun';
filePath = 'toolbox/matlab/iofun';
请注意,一个使用反斜杠,另一个使用正斜杠。为了确保您的代码能够跨多个平台工作,我将检查这些用于处理文件路径的MATLAB函数(仅举几个例子):,。谢谢adam,但它是永久性地更改目录,还是仅在工作需要时才更改目录?它会更改更改后运行的所有脚本和命令的目录。哦,但是我不打算那样做。。我认为有一个默认文件夹可以放置图像,在那里我可以做同样的事情,并使用imread调用,这对我将来也会更容易。@kigurai:那么你也应该看看uigetdir。