2016-02-29 59 views
1

我使用imresize来调整大小约20个图像。我想将调整大小的图像存储在我创建的新文件夹中。下面是我使用的代码:将逻辑输出图像保存到新的(mkdir)文件夹中

imwrite(myoutput, 'resized.png'); 

现在我的问题我们,我只得到写入工作目录,命名为“resized.PNG”一个图像。我想要保存所有20个调整大小的图像。

我也希望他们保存在由mkdir(resizedFolder)定义的新文件夹中......我不知道该怎么做。

这里是我的代码的摘录:

dirD=dir('*.jpeg'); 
for k=1:length(dirD); %k=20  %technically 
    %i ran a long code to find a  %rectangular boundary, and cropped. 

    CropIm=imcrop(I, thisBlobsBoundingBox); 
    resizedIm=imresize(CropIm, 0.1); 
end 

现在,我想resizedIm存储在resizedFolder作为单独的图像应该给我20张。

+0

看看了'fullfile'和'mkdir'帮助,如果你还有问题,回来跟所有的代码从阅读到写作 – matlabgui

回答

2

您将要使用fullfile来组合目录和文件名。你也想为每个图像创建一个自定义的文件名。下面我假设你的所有图像都在单元阵列中。

resizedFolder = '/path/to/folder'; 

% Create folder if it doesn't exist 
if ~exist(resizedFolder, 'dir') 
    mkdir(resizedFolder); 
end 

dirD = dir('*.jpeg'); 

for k = 1:numel(dirD); 
    % Your code to get the boundary 
    CropIm = imcrop(I, thisBlobsBoundingBox); 
    resizedIm = imresize(CropIm, 0.1); 

    % Create a custom filename for this image. 
    filename = sprintf('resized%02d.png', k); 
    imwrite(resizedIm, fullfile(resizedFolder, filename)); 
end 

这将创建的文件夹中,你与文件名被指定图片:resized01.pngresized02.png ...

更新:我已经更新了我的回答更具体到你的初始代码。

+0

谢谢你很多的家伙。 Suever我使用你的帮助...我得到了这个错误信息;:[非单元格数组对象的单元格内容引用] ...这是我的输出(裁剪图像)。顺便说一句,我应该补充说,我的输出变量是逻辑。请如何让我的逻辑输出为单元阵列? –

+0

@OgwucheJoseph我的评论中没有看到错误信息。请更新。 – Suever

+0

我收到错误“单元格内容参考从非单元格数组对象”... myoutput,这是一个逻辑变量,其中包含裁剪图像 –

0

我将当前目录存储到一个变量像

curPath = cd; 
newPath = newDirectory; 
cd(curPath); 
cd newPath; 

在此之后,你的工作目录是新的文件夹。运行循环来保存你的文件。

确保您正在迭代文件名。

+0

在MATLAB中最好不要使用'i'或'j'作为循环索引http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in-matlab – Suever

相关问题