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

fee*_*ree 0 matlab

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

A  B  C  D
E  F  G  H
....
1  2  3  4
...
6  7  8  9
Run Code Online (Sandbox Code Playgroud)

图像将是灰度级,并且所有字符将设置为0,而背景设置为100.有关如何生成此图像的任何想法?

hba*_*rts 6

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

x = [reshape(['A':'Z',' ',' '],4,[]).' ; reshape(['1':'9',' ',' ',' '],4,[]).']
Run Code Online (Sandbox Code Playgroud)

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

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

text(0.5,0.5,x,'FontName','FixedWidth')
Run Code Online (Sandbox Code Playgroud)

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

axis off
im = getframe(gcf);
Run Code Online (Sandbox Code Playgroud)

结果

对不起,这是不是background=100characters=0,但你应该能够轻松地裁剪,缩放和样式使用的性能形象text,axis并在矩阵一些手动缩放.使用更大的字体大小,文本也将更少像素化.