フォルダから画像を順に読み取り処理する方法
조회 수: 66(최근 30일)
표시 이전 댓글
画像が複数枚入っているフォルダを読み込み、順に処理を行って保存したいです。
下記のようなコードを書いているのですが、画像が全く表示されません。
エラーメッセージも出ないため、どこが間違っているのか特定できずにいます。
お力を貸していただけないでしょうか。
im_list=dir("フォルダ名");
file_name={im_list.name};
for i=3:size(file_name,1)
I=imread(file_name{1})
imshow(I)
I2=rgb2gray(I);
BW=I2<75;
imshow(BW)
saveas(fig,file_name{1}.pdf)
end
댓글 수: 0
채택된 답변
Kojiro Saito
2022년 6월 14일
画像が表示されない理由は、size(file_name, 1) が1のため、for文の中が実行されていないためです。
file_name は1行 ✕ (画像の枚数+2)列 の変数になっています。+2は「.」と「..」です。
画像枚数分だけ処理するので、size(file_name, 2)にする必要があります。
また「.」と「..」も取り除いてしまったほうが処理が楽です。
以下のように変更してみてください。
foldername = "フォルダ名";
im_list=dir(foldername);
file_name={im_list.name};
file_name = file_name(~ismember(file_name, {'.', '..'})); %「.」と「..」を除去
for n=1:size(file_name, 2)
I=imread(fullfile(foldername, file_name{n}));
imshow(I)
I2=rgb2gray(I);
BW=I2<75;
imshow(BW)
saveas(gcf, [file_name{n} '.pdf'])
end
추가 답변(1개)
Shunichi Kusano
2022년 6월 15일
편집: Shunichi Kusano
2022년 6월 15일
imageDatastore使うともっと簡単に書けてしまいます。おススメです。
imds = imageDatastore("フォルダ名");
while hasdata(imds)
[I,info] = read(imds);
% 処理を入れる
end
참고 항목
범주
Find more on イメージ算術 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!