0

私は50個の画像を持っています。画像列ごとにmatlabのテキストファイルにデータを書き込みたいのですが、プログラムを実行すると、データは1つの画像値だけに書き込まれます。

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 
4

1 に答える 1

0

オプションでやってfopenwt+ます。まず、そのような選択肢はありません。多分あなたは意味し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);

これはうまくいくはずです。

于 2013-03-02T19:34:40.080 に答える