我正在尝试将我操作的图像写入目录中的“.tif”文件。我使用mkdir()函数使用Matlab创建结果目录。
这是我正在使用的命令:
[pathstr, nameWOext, ext] = fileparts(filename);
results_dir = ['results' '/results_' nameWOext];
%check to see if the directory exists already, if it doesn't make it
if(exist(results_dir) ~= 7)
mkdir(results_dir);
end
filenamezero = [nameWOext '_J' ext];
imwrite (~J, fullfile(results_dir, filenamezero)); //Error here
当Matlab到达此行时,它会输出错误:
无法打开文件进行写作。检查目录或文件权限。
我检查了文件夹'results / results_',该文件夹是只读的。显然mkdir()
正在自动执行此操作。
有没有解决这个问题?
由于
P.S。我使用Matlab 6.1运行Windows 7
答案 0 :(得分:4)
我认为您的问题可能是您使用fullfile
功能。我认为结果是您尝试传递给imwrite
的路径混合了\
和/
用于文件分隔符。
请尝试使用此代码:
filenamezero = [nameWOext '_J' ext];
imwrite (~J, [results_dir '/' filenamezero]);
答案 1 :(得分:0)
似乎Matlab在使用绝对路径时需要使用' /'而不是' \'。
例如,这对我有用(Windows 8.1,Matlab R2012b)
imwrite(imagename, 'C:/Users/Myworkingfolder/myimage1.jpg','jpg');
但不是:
imwrite(imagename, 'C:\Users\Myworkingfolder.jpg','jpg');
而且,即使Windows本身使用了' \'从Windows资源管理器复制路径时。
虽然,在使用相对路径时,例如在Matlab中写入当前文件夹:
imwrite(imagename, 'Myworkingfolder/myimage1.jpg','jpg');
和
imwrite(imagename, 'Myworkingfolder\myimage1.jpg','jpg');
开箱即用。它可能与两种情况(绝对和相对路径)的实施方式有关......