Matlab 用符号替换像素
我正在尝试编写一个函数,将索引图像作为输入,并用符号或字符替换其所有像素 一幅图像胜过1000个字:这是所需的外观输出。每个符号表示图像的唯一颜色值 我的问题是我不知道如何在屏幕上正确的位置打印符号。我的第一种方法是使用Wingdings字体,并在位置上放置文本,但效果并不理想。文本在缩放时会更改大小,并且不会与绘图的其余部分相应地显示 我在这里留下了一小段代码,它创建了一个小网格,并使用了一个示例图像Matlab 用符号替换像素,matlab,matlab-figure,Matlab,Matlab Figure,我正在尝试编写一个函数,将索引图像作为输入,并用符号或字符替换其所有像素 一幅图像胜过1000个字:这是所需的外观输出。每个符号表示图像的唯一颜色值 我的问题是我不知道如何在屏幕上正确的位置打印符号。我的第一种方法是使用Wingdings字体,并在位置上放置文本,但效果并不理想。文本在缩放时会更改大小,并且不会与绘图的其余部分相应地显示 我在这里留下了一小段代码,它创建了一个小网格,并使用了一个示例图像 function drawChars (img) if nargin==0 load
function drawChars (img)
if nargin==0
load mandrill
img=X(1:4:end,1:4:end);
end
chars=randperm(numel(unique(img)));
[h,w]=size(img);
% Form a grid
figure
hold on
for ii=0:h
plot([ii ii],[0 w],'k');
end
for ii=0:w
plot([0 h],[ii ii],'k');
end
axis equal;
axis([0 h 0 w])
%% This does not work as expected
for ii=1:h
for jj=1:w
text(ii, jj, char(chars(img(ii,jj))), 'fontname', 'Wingdings', 'fontsize',10);
end
end
end
简短的问题:你会用什么方法来解决这个问题
注意:字符的选择也有问题,但是如果char{is selected在figure更改为f=figure时不能很好地工作,请暂时忽略它
将创建的图形打印成足够大小的png。您想要的输出是什么?光栅/矢量图形?@knedlsepp很好。例如,是的。实际上,以后可以打印的任何图形都可以。此外,如果我可以手动将其分块打印,那将非常好。这就是为什么我开始使用这种方法,以便可以随心所欲地缩放并保存我想最简单的方法是使用单间隔字体,只输出一个字符串,如中所示。@knedlsepp很有意思。关于符号单间隔字体有什么建议吗?的确,我也不知道我头顶上有任何符号单间隔字体。不过,你可以将其导出为CSV文件,然后用Excel或其他工具漂亮地打印出来类似软件作为一种解决方法。它甚至可能适用于非等距字体。这很好,但如果你已经有了图形并且想要绘制它,它就可以工作。然而,我的问题更多地依赖于美学上的正确分配,例如,符号的中间以像素的中间为中心,将符号分配给像素为了得到一个好的图像,我只需要另一种方法。但是感谢这段代码!
r=size(img).*16;
set(f,'paperunits','points')
set(f,'papersize',r)
set(f,'paperposition',[0 0 r]);
print(f,'example.png','-dpng');