2011-11-28 76 views
2

我正在嘗試編寫一個圖像,用於對目錄中的'.tif'文件執行操作。我使用mkdir()函數使用Matlab製作結果目錄。在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的到達這一行它輸出一個錯誤:

Could not open file for writing. Check directory or file permissions.

我檢查文件夾「的結果/ results_」和文件夾是隻讀。顯然mkdir()正在自動執行此操作。

有沒有辦法解決這個問題?

謝謝

P.S.我使用Matlab 6.1運行Windows 7

+1

我不知道爲什麼它被創建爲只讀,但您可以嘗試調用'fileattrib(results_dir,'+ w') '創建後。 – aganders3

+0

我剛纔試過,我仍然收到相同的錯誤。我甚至手動將文件夾權限設置爲讀取/寫入,並且仍然存在相同的錯誤。 –

+0

它位於不同的文件系統/分區上嗎? –

回答

4

我認爲你的問題可能是你使用fullfile函數。我認爲結果是您嘗試傳遞給imwrite的路徑的文件分隔符的組合爲\/

嘗試使用這個:

filenamezero = [nameWOext '_J' ext]; 
imwrite (~J, [results_dir '/' filenamezero]); 
+0

謝謝,我從來不會想到任何事情都是錯的。但是'fullfile()'是罪魁禍首 –

+0

我在一個更新版本的Matlab上嘗試過它,它們似乎修復了它。不過,我很高興你能工作。 – aganders3

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

它開箱的。這可能是與兩種情況(絕對和相對路徑)如何實現...