필터 지우기
필터 지우기

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

조회 수: 4 (최근 30일)
moiji
moiji 2023년 2월 8일
댓글: moiji 2023년 2월 9일
イメージの領域解析で以下の画像を作成しました。
その後、白抜きのところに番号を入れたくて以下のコードを作成しました。
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 でした。
というエラーメッセージが出ました。
解決策を教えていただきたいです。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 2월 8일
> 解決策を教えていただきたいです
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
moiji
moiji 2023년 2월 9일
無事解決しました。
ありがとうございます。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!