2014-11-03 156 views
1

我正在寫一個簡單的函數,它讀取一系列圖像,重新調整大小,然後將每組重新大小的圖像保存到一個新文件夾中。這裏是我的代碼:調整圖像大小並將圖像保存到新目錄

function [ image ] = FrameResize(Folder, ImgType) 

Frames = dir([Folder '/' ImgType]); 
NumFrames = size(Frames,1); 

new_size = 2; 

for i = 1 : NumFrames, 
    image = double(imread([Folder '/' Frames(i).name])); 

    for j = 2 : 10, 
     new_size = power(new_size, j); 

     % Creating a new folder called 'Low-Resolution' on the 
     % previous directory 
     mkdir ('.. Low-Resolution'); 

     image = imresize(image, [new_size new_size]); 
     imwrite(image, 'Low-Resolution'); 


    end 

end 

end 

我主要有兩個疑惑:

  • 我如何保存特定名稱的圖片,像im_1_64im_2_64等根據迭代和分辨率?
  • 如何使每次迭代時創建的文件夾名稱更改,以便將同一分辨率的圖像保存在同一文件夾中?
+0

你如何檢測分辨率? – Divakar 2014-11-03 14:08:05

+0

或者,您如何定義「低分辨率」? – Divakar 2014-11-03 14:32:47

回答

2

你既然知道,分辨率爲:new_size x new_size,你可以在imwrite功能使用:

imwrite(image, ['im_' num2str(i) '_' num2str(new_size) '.' ImgType]); 

假設ImgType持有的擴展。

要設置的文件夾,你可以做這樣的事情:

mkdir(num2str(new_size)) 
cd(num2str(new_size)) 
imwrite(image, ['im_' num2str(i) '_' num2str(new_size) '.' ImgType]); 
cd .. 
+0

不錯的文件夾設置。 – Rashid 2014-11-03 15:21:08

+0

謝謝,它幫助了很多。剩下的唯一問題是我收到一條消息:'num2str的語法無效。可能是a),}或]缺少'mkdir('低分辨率圖像_'num2str(new_size)),但我找不到缺少的東西 – user3368101 2014-11-03 16:15:26

+0

如果你想連接字符串,你必須使用'strcat ('Low-Resolution Images_',num2str(new_size))或'['Low-Resolution Images_'num2str(new_size)]' – 0xMB 2014-11-03 16:19:21

1

你有一個答案你滿意,但我強烈建議做兩分不同的事情:

  • 使用fullfile到創建/連接文件和路徑名稱。

    ,而不是例如:

    imread([Folder '/' Frames(i).name]) 
    

    imread(fullfile(Folder,Frames(i).name)) 
    

    這是很好的相對路徑也:

    fullfile('..','Low-Resolution') 
    ans = 
    ..\Low-Resolution 
    
  • 使用sprintf創建自變量包含數字數據串。相反的:

    ['im_' num2str(i) '_' num2str(new_size) '.' ImgType] 
    

    sprintf('im_%d_%d.%s', i, new_size, ImgType) 
    

    你甚至可以指定每個整數需要多少位數字。比較:

    K>> sprintf('im_%d_%d.%s', i, new_size, ImgType) 
    ans = 
    im_2_64.png 
    K>> sprintf('im_%02d_%d.%s', i, new_size, ImgType) 
    ans = 
    im_02_64.png 
    
相關問題