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

3 vues (au cours des 30 derniers jours)
moiji
moiji le 8 Fév 2023
Commenté : moiji le 9 Fév 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 でした。
というエラーメッセージが出ました。
解決策を教えていただきたいです。

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 8 Fév 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 commentaire
moiji
moiji le 9 Fév 2023
無事解決しました。
ありがとうございます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Convert Image Type dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!