如何使用Matlab生成英文字母和数字图像

时间:2015-09-25 07:09:09

标签: matlab

我想用Matlab生成一个包含所有英文字母和数字(从0到9)的人工图像,以及我期望的最终图像:

A  B  C  D
E  F  G  H
....
1  2  3  4
...
6  7  8  9

图像为灰度,当背景设置为100时,所有字符都将设置为0.有关如何生成此图像的任何想法?

1 个答案:

答案 0 :(得分:6)

您可以像数字一样使用字符(例如'A'),因此要创建包含所有大写字母的数组,您可以调用'A':'Z'。数字也是如此:'1':'9'(注意引号,所以这些是字符,而不是数字!)。你可以做一些reshape魔术来让它们按照你喜欢的方式对齐:

x = [reshape(['A':'Z',' ',' '],4,[]).' ; reshape(['1':'9',' ',' ',' '],4,[]).']

是的,这是一个丑陋的黑客,手动添加空格。

现在,您可以使用text函数将此字符串x放置在图形窗口中。使用等宽字体可以产生更好的结果。您可以使用链接的帮助页面中的所有选项设置文本样式。

text(0.5,0.5,x,'FontName','FixedWidth')

最后,关闭轴后,您可以使用getframe功能将图形打印成图像。

axis off
im = getframe(gcf);

result

很抱歉,这不适用于background=100characters=0,但您应该可以使用textaxis的属性轻松裁剪,缩放和设置图片样式以及对矩阵的一些手动缩放。使用更大的字体大小,文本也将更少像素化。