是否可以在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
获取空指针异常。
答案 0 :(得分: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'
属性)来计算所需的度量值(以像素为单位)。
答案 1 :(得分:0)
如果要获取字体指标,则需要创建一个虚拟的图形对象,如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);