for文の書き方
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
hiro
am 30 Nov. 2020
Kommentiert: hiro
am 4 Dez. 2020
I1 = imread('img001.jpg');
BW1 = edge(I1, 'Canny');
NZ1 = BW1.^2;
BT1 = NZ1(:);
SM1 = sum(BT1);
'img001.jpg'は、白黒画像です。上記のように、白黒画像を読み取り、キャニー法でエッジを検出し、検出したエッジ画像(BW1)の各要素を二乗しました。そして、行列の形だったNZ1を縦長の1つのベクトル(BT1)に変換し、BT1の要素を全部合計して1つのスカラー値としてSM1を出力しました。
これを'img002.jpg', 'img003.jpg', ・・・, 'img010.jpg', ・・・, 'img100.jpg', ・・・, 'imgN.jpg'のようにN個まとめて行いたいのですがどのようにコードを書けば良いのかご教示いただきたいです。
また、出力されたSM1~SMNのスカラー値のうち、値が大きい順に上位30個を抜き出し、それと対応する30個の白黒画像だけを読み込んで30フレームの1つの動画にするコードの書き方もご教示いただけたら幸いです。
0 Kommentare
Akzeptierte Antwort
Hiroshi Miyagawa
am 1 Dez. 2020
まずは以下をご参照ください。
ImageFileName = {...
'sampleImage1.jpg',...
'sampleImage2.jpg',...
'sampleImage3.jpg',...
'sampleImage4.jpg',...
}
%
for ii = 1:4
Image = imread(ImageFileName{ii});
BW = edge(Image,'Canny');
NZ = BW.^2;
BT = NZ(:);
SM(ii) = sum(BT);
end
3 Kommentare
Weitere Antworten (1)
Hiroshi Miyagawa
am 1 Dez. 2020
名前が異なる複数要素(ファイル名など)に対して同様の処理をしたい場合、タイトルにあるように for文が便利です。
以下のページご参考にしてみてください。
また、ご質問にあるその後の処理については、以下が参考になると思います。
配列にインデックスをつける:
並び替え:
ムービーフレームの作成:
1 Kommentar
Siehe auch
Kategorien
Mehr zu オブジェクト解析 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!