- I — トリミングするイメージ
- rect — トリミングする四角形のサイズと位置
imcropの出力が空[ ]になってしまう
6 views (last 30 days)
Show older comments
アプリimageLabelerでラベル付けしたものを、ラベルの位置情報を基に一つ一つトリミングしようとしています。
----------------------------------------------------------------------------------------
for I = 1 : SIGN_MAX
img = readimage(b, I);
X = gTruth.LabelData.p5{I};
if X ~= 0
I3 = imcrop(img, X);
I3 = imresize(I3, [IMAGE_SIZE IMAGE_SIZE]);
img_test(:, :, :, j) = I3;
Label_test(j) = "p5";
j = j + 1;
end
end
----------------------------------------------------------------------------------------
SIGN_MAX枚のラベル付けした画像があり、p5というラベルを持つ範囲をトリミングし、リサイズした後にimg_testへ格納という認識で作成しました。
実際にエラーが出ているのはimresizeの行で以下のような内容です。
----------------------------------------------------------------------------------------
エラー: resizeParseInputs
1 番目の入力引数 Aは空以外にする必要があります。
エラー: matlab.images.internal.resize.resizeParseInputs>parsePreMethodArgs (行 113)
validateattributes(A, {'single', ...
エラー: matlab.images.internal.resize.resizeParseInputs (行 28)
parsePreMethodArgs(varargin, method_arg_idx, first_param_string_idx);
エラー: imresize (行 153)
params = matlab.images.internal.resize.resizeParseInputs(args{:});
エラー: trim (行 250)
I3 = imresize(I3, [IMAGE_SIZE IMAGE_SIZE]);
----------------------------------------------------------------------------------------
デバックの結果、imresizeの上のimcropの出力I3が空[ ]になっていることがわかりました。
問題なく処理を終えるラベルもあるのですが、一部のラベルで発生しています。
このプログラムではなくimageLabelerでのミスなのでしょうか。
解答いただけると幸いです。
0 Comments
Accepted Answer
Atsushi Ueno
on 23 Dec 2021
>デバックの結果、imresizeの上のimcropの出力I3が空[ ]になっていることがわかりました。
そこまで特定されていればもう、imcrop関数の入力いずれかに意図しない値が入っていると断定できます。
後者のrectは「空間座標でトリミングする四角形のサイズと位置」なので要注意です。画像データ(行列)のインデックスとは異なるので、[xmin ymin width height]には実数・負の値・大きな値等何でも入力可能で、画像の座標と異なる範囲を指し示す可能性があります。またreadimage関数で指定した画像自体が存在せず空[]になっている可能性も考えられます。いずれにせよ、rectが存在する画像Iの座標を指定しなければimcrop関数は空[]の値を返します。
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!