我想用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.有关如何生成此图像的任何想法?
您可以'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=100和characters=0,但你应该能够轻松地裁剪,缩放和样式使用的性能形象text,axis并在矩阵一些手动缩放.使用更大的字体大小,文本也将更少像素化.