Рендеринг изображений ASCII-символами | OTUS
🔥 Честные скидки!
Только до 28.07 можно приобрести курсы июля и августа со скидкой 15%. Торопитесь!
Выбрать курс

Рендеринг изображений ASCII-символами

В этой статье мы рассмотрим один из интересных проектов, который называется ASCII Art. Он представляет собой однофайловую библиотеку C/C++, позволяющую выполнять преобразование изображения в печатные ASCII-символы. Все происходит в режиме реального времени с использованием одного дерево решений. Нужная производительность достигается благодаря применению сравнения интенсивности пикселей внутри узлов дерева.

Screenshot_1-1801-a75e11.png

Как функционирует этот алгоритм?

Работает все следующим образом: 1. Входная картинка разбивается на прямоугольные ячейки, имеющие одинаковый размер. Размер сетки отвечает высоте и ширине одной ячейки (символу шрифта), которые получены из кодовой книги на этапе обучения. 2. Символ подбирается для каждой ячейки из кодовой книги — он заменяет «сырые» пиксели. Для этого используется дерево решений — в него подаются пиксели. 3. Если речь идет о большом наборе изображений, то он переводится в ASCII в соответствии с индексом структурного сходства с последующим применением в роли обучающего набора данных.

Как начать работу с библиотекой?

Встроить ее в ваше приложение несложно. Для этого следует добавить ascii_art.c и заголовочный файл в ваше дерево исходного кода, а также загрузить шестнадцатеричную модель. Далее выполняются следующие API-вызовы: 1. Для инициализации структуры ascii_render, определенной в заголовочном файле ascii_art.h, сначала вызывается AsciiArtInit. 2. Подготавливается изображение, которое следует обработать. Это делается путем перевода этого изображения в оттенки серого. Тут подойдет библиотека типа cvtColor из OpenCV либо встроенный интерфейс AsciiArtLoadImage. 3. Выделяется буфер, который должен быть достаточно большим для хранения всех выходных данных. Число нужных байтов можно получить посредством интерфейса AsciiArtTextBufSize. Данный шаг не обязателен, если вы не хотите выводить текст, а желаете вместо этого получить двоичное изображение из символов ASCII. 4. Входное изображение преобразуется в ASCII-символы посредством AsciiArtRender.

Типичное применение интерфейсов можно посмотреть на простейшей программе, код которой размещен ниже:

Screenshot_2-1801-44c2f2.png

Ознакомиться с этим проектом подробнее можно здесь.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
⏰ Только до 28.07
Минус 15% на курсы июля и августа →