イメージ上の物体の中央に文字を入れる
조회 수: 4 (최근 30일)
이전 댓글 표시
イメージの領域解析で以下の画像を作成しました。
![](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
채택된 답변
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);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Convert Image Type에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!