フォルダ内に含まれる全画像の処理
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
竣也 辻本
am 26 Okt. 2021
Kommentiert: 竣也 辻本
am 2 Nov. 2021
フォルダ内に含まれる画像全てを同時に処理する方法を教えてください。
bmpFiles = dir('*.bmp');
numfiles = length(bmpFiles);
mydata = cell(1, numfiles);
for k = 1:numfiles
mydata{k} = imread(bmpFiles(k).name);
imshow(mydata{k}); hold on;
B = mydata{k} > 254; % 二値化
X = 498;
Y = round(mean(rmoutliers(find(B(:,X))))); % y座標(indexの外れ値を除き平均)
xline(X,'Color','w'); % x座標を白い線で表示
yline(Y,'Color','w'); % y座標を白い線で表示
end
現在このようにやろうとしたのですがうまくいっていません
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 26 Okt. 2021
【エラーで止まる原因として想定する事】
find(B(:,X))が「0×1 の空の double 列ベクトル」になる場合。つまりその列は全部黒の場合です。その場合、rmoutliers()も空の列ベクトルを、mean()とround()はNaNを返します。白い箇所が見つからなかった場合、直行する白線を描画しない様にすれば止まらなくなります。
if ~isnan(Y)
yline(Y,'Color','w'); % y座標を白い線で表示
end
【他に気になる事】
二値化画像は、RGB成分をそれぞれ二値化した3次元行列になっています。そのままこのプログラムで処理するとR成分についてしか処理しません。下記の様にグレースケール画像に変換してから二値化すべきだと思います。
B = rgb2gray(mydata{k}) > 254;
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu コンピューター ビジョンと Simulink 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!