我想用Matlab生成一个包含所有英文字母和数字(从0到9)的人工图像,以及我期望的最终图像:
A B C D
E F G H
....
1 2 3 4
...
6 7 8 9
图像为灰度,当背景设置为100时,所有字符都将设置为0.有关如何生成此图像的任何想法?
答案 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);
很抱歉,这不适用于background=100
和characters=0
,但您应该可以使用text
,axis
的属性轻松裁剪,缩放和设置图片样式以及对矩阵的一些手动缩放。使用更大的字体大小,文本也将更少像素化。