在Matlab中将图像写入文件时出错

时间:2011-11-28 22:31:22

标签: matlab

我正在尝试将我操作的图像写入目录中的“.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

2 个答案:

答案 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'); 

开箱即用。它可能与两种情况(绝对和相对路径)的实施方式有关......