2

Matlabでテキストの寸法を知ることは可能ですか?

例えば、以下の対策を知ることは可能ですか?

ここに画像の説明を入力

アップデート

画像加工はいらない。私は、「g」文字のベースラインの位置を、一般的に使用される単純な人工知能で推測できることを知っています:)これは私が望んでいるものではありません。Matlab が持っているもの、つまりフォント メトリックを教えてほしい。できない場合、答えは「Matlab はできません」です。

更新 2

現在、私はこのようなJavaインターフェースを介してやろうとしています

figure_h=figure;
axes_h = axes('Position', [0, 0, 1, 1], 'Units', 'pixels');

s='g';
x=200;
y=200;

fontName = 'Times New Roman';
fontSize = 48; % will be in points

text('String', s, 'Units', 'pixels', 'Position', [x y], 'FontName', fontName, 'FontUnits', 'points', 'FontSize', fontSize);

% make equivalent Java font
jFont=java.awt.Font(fontName,java.awt.Font.PLAIN,fontSize);

% accessing metrics object
jFrame = get(figure_h,'JavaFrame');
jCanvas = jFrame.getAxisComponent;
jGraphics=jCanvas.getGraphics;
jMetrics=jGraphics.getFontMetrics;

%rectangle('Position', [x, y, jMetrics.charWidth(s), jMetrics.getDescent]);

でヌルポインタ例外を取得していますgetFontMetrics

4

2 に答える 2

0

TextFieldフォント メトリックを取得することが目的の場合は、次のようなダミーの Graphics オブジェクトを作成する必要があります。

fontName = 'Times New Roman';
fontSize = 48; % will be in points

jText = java.awt.TextField('');
jFont = java.awt.Font(fontName, java.awt.Font.PLAIN, fontSize);
jMetrics = jText.getFontMetrics(jFont);
于 2013-07-08T19:44:47.353 に答える
0

を使用してフォントのイメージを取得できます

fh = figure;
text( 0, 0, 'frog', 'FontName', 'tahoma', 'FontSize', 30 );
axis off;
f = getframe( fh );
bw = rgb2gray(f.cdata)==0;

これbwで、フォントのバイナリ イメージが作成されました (この例ではtahomaサイズ 30)。regionprops(特に'BoundingBox'プロパティ)を使用して、目的の測定値(ピクセル単位)を計算することができます。

于 2013-07-08T11:55:07.600 に答える