Я пытаюсь написать функцию, которая будет вводить проиндексированное изображение в качестве ввода и будет заменять все его пиксели символами или символами.Заменить пиксели символами
Изображение стоит более 1000 слов: это желаемый результат вывода. Каждый из символов представляет собой уникальное значение цвета изображения.
Моя проблема заключается в том, что я не знаю, как печатать на экране символы в правильном месте. Мой первый подход заключался в использовании шрифта «Wingdings» и размещении текста на местах, но он не работает должным образом. Текст изменяет размеры при увеличении и не ведет себя соответственно к остальной части графика.
Я оставляю здесь небольшой фрагмент кода, который создает небольшую сетку и использует пример изображения.
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
Короткий вопрос: Какой подход вы использовали бы для решения проблемы?
Примечание: существует проблема с выбором символов также, но игнорировать его на некоторое время (если символ {выбран не работает хорошо)
Какой ваш желаемый результат? Растровая/Векторная графика? – knedlsepp
@knedlsepp Хорошая точка. Да, например. На самом деле все, что может быть позже напечатано. Кроме того, было бы неплохо, если бы я мог вручную разбить его на части. Вот почему я начал с этого подхода, поэтому я мог масштабировать, насколько мне было угодно, и сохранить его. –
Я предполагаю, что самым простым подходом было бы использование моноширинного шрифта и просто вывод строки, как в [ASCII art] (http://en.wikipedia.org/wiki/ASCII_art). – knedlsepp