イメージ上の物体の中央に文字を入れる
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
イメージの領域解析で以下の画像を作成しました。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1288770/image.jpeg)
その後、白抜きのところに番号を入れたくて以下のコードを作成しました。
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 でした。
というエラーメッセージが出ました。
解決策を教えていただきたいです。
0 Kommentare
Akzeptierte Antwort
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);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Convert Image Type finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!