Ошибка записи изображения в файл в Matlab - PullRequest
2 голосов
/ 29 ноября 2011

Я пытаюсь записать изображение, над которым выполняю операции, в файл .tif в каталоге. Я создаю каталог результатов с Matlab, используя функцию mkdir ().

Вот команда, которую я использую:

[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. Я использую Windows 7, используя Matlab 6.1

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Я думаю, что вашей проблемой может быть использование функции fullfile.Я думаю, что в результате путь, который вы пытаетесь передать на imwrite, содержит \ и / для разделителей файлов.

Попробуйте использовать это вместо:

filenamezero = [nameWOext '_J' ext];
imwrite (~J, [results_dir '/' filenamezero]);
0 голосов
/ 09 июня 2015

Кажется, что 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'); 

Работает из коробки.Это может быть связано с тем, как реализованы оба случая (абсолютные и относительные пути) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...