プロが教える店舗&オフィスのセキュリティ対策術

matlabで複数のフォルダ(ディレクトリ)に入った画像が読み込みたいのですが、
どうしたらいいのかアドバイスお願いします。

フォルダの名前は
B01_P00
B01_P01
B01_P02
...
B02_P00
B02_P01
...
といったような感じで合計80個近くあります。
それぞれのフォルダには60枚ずつ画像が入っています。
フォルダ内の画像は頭にフォルダと同じ名前が付いており、末尾に番号が付いています。
フォルダB01_P00なら、
B01_P00_1.pgm
B01_P00_2.pgm
...
といった感じです。

(画像は合計4800枚になるわけで,
全ての画像を読み込めなくてもいいと思っていますが)
80個のフォルダからたとえば自分で決めた10枚を読み込んで
合計800枚の画像を読み込んで(縮小などの処理後)全てをひとつの行列に収納したい
と思っています。
縮小などの処理→行列に収納
のプログラムは完成しているのですが、
肝心の読み込みがどうしたらいいのかわかりません。
わかる方、ぜひ教えていただきたいです!

A 回答 (2件)

for loop_folder1 = 1:10


for loop_folder2 = 1:10
for loop_image_no = 1:10
[A] = imread(['B', num2str(loop_folder1,'%02d'), '_P',...
num2str(loop_folder1,'%02d'), '/B', num2str(loop_folder1,'%02d'), '_P',...
num2str(loop_folder1,'%02d'),'_',num2str(loop_image_no),'.pgm']);

A には unit8 で pgm 画像が入る.
後は,double(A) とか
[文字列, 文字列 ] で文字列つなぐ
/ サブディレクトリに移る.
num2str 数字を文字列へ
    • good
    • 0

>といったような感じで合計80個近くあります。


と言われても、これだとフォルダの名前が結局どのようについてるかわからないですね…
B01_P09の次はB01_P10なのか、それともB02_P00なのか。
また、画像ファイル名もB01_P00_9の次はB01_P00_10ってことでいいんですかね?
自分で読み込むものを決める時は手打ちでいいですかね?
とりあえず、仮に
B01_P01_1
B02_P02_5
B04_P08_7
B05_P04_10
B06_P02_54
B08_P09_32
の6枚を読み込む、ということにしたいと思います。(数字は適当です)

Idx=[1,1,1;2,2,5;4,8,7;5,4,10;6,2,54;8,9,32];
for k=1:length(Idx(:,1));
A=imread(sprintf('B%02d_P%02d\\B%02d_P%02d_%d.pgm',Idx(k,[1,2,1:3])));
end;
Matlab無しの環境で書いているのでどこかにエラーが出るかも。
こんな感じですかね?あとはkのループ内でAをいろいろ加工するなり好きにしてやればいいかと思います。

エラーが出るor何をしているのかわからないなどありましたら補足願います。

参考になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!