2012-08-08 178 views
0

空間數據文件(.png)如何將多個.png文件到文件.MAT

001.png 
002.png 
003.png 
. 
. 
. 
00n.png 

轉換爲

001.mat 
002.mat 
003.mat 
. 
. 
. 
00n.mat 
+1

出於好奇,做這件事有什麼意義/好處? – jmetz 2012-08-08 20:36:50

+2

,或者將我的問題放在上下文中:'png'是一種通用格式,而'mat'則可以縮略圖和與其他軟件的互操作性。將一個圖像保存在一個'mat'文件中可以讓你...稍微快點加載到matlab中(這就是它!)。這兩種格式都使用無損壓縮。 – jmetz 2012-08-08 20:51:25

回答

3

補充EitanT的答案,如果你有沒有文件名限制的文件,例如:

file01.png 
file02.png 
fls1.png 
fls2.png 
pics001.png 
pics002.png 

您可以使用dir函數,它可以給您更多的靈活性。例如:

filenames = dir('*.png'); %# get information of all .png files in work dir 
n = numel(filenames); %# number of .png files 

for i = 1:n 
    A = imread(filenames(i).name); 

    %# gets full path, filename radical and extension 
    [fpath radical ext] = fileparts(filenames(i).name); 

    save([radical '.mat'], 'A');       
end 

fileparts是MATLAB函數分解在文件路徑,自由基和擴展名的文件名。 例如,如果我有一個文件/home/user/photo.png,此函數將返回:

fpath = /home/user 
radical = photo 
ext  = .png 

文件格式錯誤

OP得到了以下錯誤:

??? Error using ==> imread at 387 Unable to determine the file format. Error in ==> PNG2MATFiles at 5 A = imread(filenames(i).name);

我已經下載了原*並使用file linux命令對其進行測試。我的輸出:

FY2E_2011_09_01_00_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_01_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_02_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_03_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_04_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_05_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_06_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_07_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_08_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_09_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100 FY2E_2011_09_01_10_01_ir1_proj.png: Matlab v5 mat-file (little endian) version 0x0100

imread無法打開這些文件'png',因爲它們已經被存儲爲.mat

+0

???錯誤使用==> imread at 387 無法確定文件格式。 錯誤==> PNG2MATFiles 5 A = imread(filenames(i).name); 怎麼會出錯? – Sadiq 2012-08-09 06:16:10

+0

嘗試'A = imread(文件名(i).name,'png')' – 2012-08-09 07:16:37

+0

錯誤同一行 – Sadiq 2012-08-09 07:24:23

2

試試這個:

for i = 1:n 
    A = imread(['00', num2str(i), '.png'], 'png'); %# Read PNG file 
    save(['00', num2str(i), '.mat'], 'A');   %# Store data to MAT file 
end 
相關問題