2013-06-06 3 views
0

Я пытаюсь записать последовательность изображений в папку с помощью функции imwrite в Matlab. Сначала я обрезаю входное изображение (inputImg) с заданной матрицей как cropMatrix, затем сохраните полученные изображения для папки. Мой код для этого выглядит следующим образом:Matlab: записывать последовательности изображений в папку

for i = 1:n 
    img = imcrop(inputImg,cropMatrix); 
    fileName = sprintf('C:\Users\King_Knight\Desktop\Images\%02d',i); 
    imwrite (img, 'fileName', 'jpg'); 
end 

Тогда папка совершенно пуста, не выписывать ничего, кроме того, я получил предупреждение в рабочем пространстве Matlab говоря:

Warning: Escape sequence '\U' is not valid. See 'help sprintf' for valid escape sequences. 

I «Он обыскал интернет, но все равно не мог его решить. Может ли кто-нибудь помочь? Благодарю.

ответ

2

Набор функций в Matlab будет интерпретировать escape-коды C-стиля, которые всегда начинаются с символа \. Обычно проблема заключается в том, что Windows использует обратную косую черту как разделитель каталога.

Простым решением является побег всех обратных косых черт с использованием \\. Например:

fileName = sprintf('C:\\Users\\King_Knight\\Desktop\\Images\\%02d',i); 

будет на самом деле создать строку C:\Users\King_Knight\Desktop\Images\00, по мере необходимости.

Вы можете ознакомиться с соответствующей документацией here.

Обратите внимание, что в Matlab, в отличие от C, это относится только к функциям fprintf, sprintf и т.д. Вы не должны сделать это для других функций, таких как disp.

+0

Благодарим вас за ответ. Я попробовал это, затем появилось предупреждающее сообщение, но папка все еще пуста. Он ничего не выписывал. Я использовал «imshow», чтобы увидеть, является ли «img» пустым изображением или нет, но оно правильно его отражало. Есть ли у вас какие-либо идеи? –

+0

Это звучит как другая проблема. Имеется ли папка, которую вы хотите написать? – jazzbassrob

+0

Да, он существует. Я создал его вручную. –

1
clear all; 
%%%% Image Read 
%% 

input_folder = '..'; % Enter name of folder from which you want to upload pictures with full path 
output_folder = '..'; 
filenames = dir(fullfile(input_folder, '*.jpg')); % read all images with specified extention, its jpg in our case 
total_images = numel(filenames); % count total number of photos present in that folder 
Outputs=total_images; 
dir=output_folder; 

%% 

%% 
for i = 1:total_images 
    full_name= fullfile(input_folder, filenames(i).name);  % it will specify images names with full path and extension 
    our_images = imread(full_name);       % Read images 
    figure (i);            % used tat index n so old figures are not over written by new new figures 
    imshow(our_images);          % Show all images 
    I = our_images; 
    I = imresize(I, [384 384]); 

    filename = [sprintf('%03d',i) '.jpg']; 
    fullname = fullfile(output_folder,'output_folder',filename); 
    imwrite(I,fullname) % Write out to a JPEG file (img1.jpg, img2.jpg, etc.) 


end 

%% 
0

Если вы хотите записать изображение в папку назначения, используйте следующий код в MATLAB.

destinationFolder = 'C:\Users\Deepa\Desktop\imagefolder'; % Your folder path 
if ~exist(destinationFolder, 'dir') 
    mkdir(destinationFolder); 
end 
baseFileName = sprintf('%d.png', i); % e.g. "1.png" 
fullFileName = fullfile(destinationFolder, baseFileName); 
imwrite(img, fullFileName); % img respresents input image. 

Я надеюсь, что этот ответ может кому-то помочь.