フォルダ内に含まれる全画像の処理
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
竣也 辻本
el 26 de Oct. de 2021
Comentada: 竣也 辻本
el 2 de Nov. de 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 comentarios
Respuesta aceptada
Atsushi Ueno
el 26 de Oct. de 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;
Más respuestas (0)
Ver también
Categorías
Más información sobre コンピューター ビジョンと Simulink en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!