前提・実現したいこと
道路標識の検出と識別を行っています。
アプリimageLabelerでラベル付けしたものを、ラベルの位置情報を基に一つ一つトリミングしようとしています。
下記ソースコードは、SIGN_MAX枚のラベル付けした画像があり、i1というラベルを持つ範囲をトリミングし、リサイズした後にimg_testへ格納という認識で作成しました。
エラーが出ているのはimresizeの行ですが、その上のimcropに問題があります。
発生している問題・エラーメッセージ
エラー: 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 (行 433) I3 = imresize(I3, [IMAGE_SIZE IMAGE_SIZE]);
該当のソースコード
MATLAB
1j = 1; 2b = imageDatastore('train/*.jpg'); 3SIGN_MAX = 1024; 4IMAGE_SIZE = 270; 5 6for I = 1 : SIGN_MAX 7 img = readimage(b, I); 8 9 X = gTruth.LabelData.i1{I}; 10 11 if X ~= 0 12 I3 = imcrop(img, X); 13 I3 = imresize(I3, [IMAGE_SIZE IMAGE_SIZE]); 14 img_test(:, :, :, j) = I3; 15 Label_test(j) = "i1"; 16 j = j + 1; 17 end 18end
試したこと
デバックの結果、imresizeの上のimcropの出力I3が空[ ]になっていることがわかりました。
トレーニング用の画像は統一されたサイズの画像を使いラベル付けを行っており問題なく上記のコードが動くのですが、テスト用の画像は検出結果を使用している為サイズが統一されていないままラベル付けを行っています。(img_testなどの変数名は変更しています。)
問題なく処理を終えるトレーニング用との相違点は画像サイズのみなのですが、このことが問題となっているのでしょうか。
他に原因があれば教えていただきたいです。
補足情報(FW/ツールのバージョンなど)
MATLAB R2021a
Computer Vision Toolbox
あなたの回答
tips
プレビュー