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

您可以使用获取字体的图像

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 回答
0

如果目的是获取字体度量,则需要创建一个虚拟 Graphics 对象,例如 a TextField,类似这样

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 回答