2013-03-02 77 views
0

我有50个图像,我想写入数据到matlab中的每个图像列明智的文本文件,但是当我运行程序时它将只写入数据只有一个图像值。将输出数据写入excel文件中的matlab

srcFiles = dir('E:\practice \\*.jpg'); 
for i = 1 : length(srcFiles) 
    filename = strcat('E:\practice\',srcFiles(i).name); 
    I = imread(filename); 
    B=bwlabel(I); 
    D=regionprops(B,'MajorAxisLength','MinorAxisLength','Extent'); 
    j=D.MajorAxisLength; 
    k=D.MinorAxisLength; 
    Axialratio=j/k 
    ex=[D.Extent] 
    fid=fopen('mu.txt ','wt+'); 
    fprintf(fid,'extent Axialratio\n'); 
    fprintf(fid,'%6f  %6f \n',[ex,Axialratio]); 
    fclose(fid); 
end 

回答

0

您与wt+选项做fopen。首先,没有这样的选择。也许你的意思是w+。文件说:

Open or create new file for reading and writing. Discard existing contents, if any. 

所以你每次丢弃的内容,你进入一个for循环为每个图像。请执行以下操作:

srcFiles = dir('E:\practice \\*.jpg'); 
fid=fopen('mu.txt ','w+'); 
for i = 1 : length(srcFiles) 
    filename = strcat('E:\practice\',srcFiles(i).name); 
    I = imread(filename); 
    B=bwlabel(I); 
    D=regionprops(B,'MajorAxisLength','MinorAxisLength','Extent'); 
    j=D.MajorAxisLength; 
    k=D.MinorAxisLength; 
    Axialratio=j/k 
    ex=[D.Extent] 

    fprintf(fid,'extent Axialratio\n'); 
    fprintf(fid,'%6f  %6f \n',ex,Axialratio); //Also don't create a matrix, you could have written it as two separate quantities as I have done now. 
end 
fclose(fid); 

这应该起作用。