イメージ上の物体の中央に文字を入れる

7 Ansichten (letzte 30 Tage)
moiji
moiji am 8 Feb. 2023
Kommentiert: moiji am 9 Feb. 2023
イメージの領域解析で以下の画像を作成しました。
その後、白抜きのところに番号を入れたくて以下のコードを作成しました。
numberはdouble形式の列ベクトルです。
center=regionprops(BW_out,'Centroid'); % 白いところの重心の座標を求める。
Fig=insertText(Fig,center,number,"black"); % 重心の座標に文字を入れる。
実行したところ、
POSITION は以下のいずれかのタイプが必要です 
double, single, uint8, uint16,
uint32, uint64, int8, int16, int32,
int64
実際の型は struct でした。
というエラーメッセージが出ました。
解決策を教えていただきたいです。

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 8 Feb. 2023
> 解決策を教えていただきたいです
regionprops 関数のデフォルト出力型は構造体配列ですが、下記例では扱いやすい table 型を選択しました。いずれにせよフィールド名や変数名を辿って、insertText 関数にベクトルまたは行列の重心座標を渡す必要があります。
また、numberはdouble形式の列ベクトルとの事ですが、insertText 関数には文字ベクトル | string スカラー | 文字ベクトルの cell 配列 | string 配列のいずれかとして渡す必要があります。下記例では number を string 関数で string 配列に変換してから insertText 関数に渡しています。
Fig = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1288770/image.jpeg');
BW_out = imbinarize(im2gray(Fig));
center = regionprops("table",BW_out,"Centroid"); % 白いところの重心の座標を求める。
number = [1;2;3;4;5]; % numberはdouble形式の列ベクトル (例として 1,2,3,4,5 とした)
insertedFig = insertText(Fig,center.Centroid-[30 50],string(number) ...
,FontSize=50,BoxOpacity=0,TextColor="black"); % 重心の座標に文字を入れる。
imshow(insertedFig);
  1 Kommentar
moiji
moiji am 9 Feb. 2023
無事解決しました。
ありがとうございます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Convert Image Type 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!