2015-12-24 2 views
0

У меня есть следующий imwrite заявление:imwrite - Имя файла должно поставляться

imwrite(img, strcat(thisdir,'_',num2str(j),'_LABEL_',categoryClassifier.Labels(labelIdx),'.jpg')); 

где categoryClassifier.Labels(labelIdx) возвращает string и thisdir также является string возвращая имя каталога. Но, я получаю следующее сообщение об ошибке:

Error using imwrite>parse_inputs (line 510) 
A filename must be supplied. 

Error in imwrite (line 418) 
    [data, map, filename, format, paramPairs] = parse_inputs(varargin{:}); 

Не является часть из strcat считается имя файла?

Спасибо.

+0

Можете ли вы показать пример того, что производит 'strcat()'? – KQS

+0

@ пользователь1877862. Когда я заменяю переменные, которые, как ожидается, будут создавать строки, например: strcat (thisdir, '_', num2str (1), '_ LABEL _', 'image', '. Jpg') ---> mri_1_LABEL_image.jpg – Simplicity

ответ

1

Это своего рода выстрел в темноте, но я подозреваю, что вы хотите categoryClassifier.Labels{labelIdx}, а не categoryClassifier.Labels(labelIdx) (разница в фигурных скобках).

Предполагая, что categoryClassifier.Labels - это массив ячеек строк, фигурные скобки дают вам содержимое этой ячейки (это то, что вы хотите), тогда как скобки дают вам массив ячеек 1x1 (который очень похож на строку в Командное окно MATLAB). Обратите также внимание, что strcat отлично справляется с обработкой массива ячеек строк, поэтому он не жалуется, но imwrite freaks out, потому что ни один из его аргументов не является строкой.

Смежные вопросы