Интересные проекты: рендеринг изображений ASCII-символами
Однофайловая библиотека C/C++, которая позволяет преобразовывать изображение или видеокадр в печатные символы ASCII в режиме реального времени.
10К открытий10К показов
ASCII Art представляет собой однофайловую библиотеку C/C++, которая позволяет преобразовывать изображение или видеокадр в печатные символы ASCII в режиме реального времени. При этом используется одно дерево решений. Производительность в реальном времени достигается за счет использования сравнения интенсивности пикселей внутри внутренних узлов дерева.
Как работает алгоритм
При использовании изображения или видеокадра выполняются следующие действия:
- Входное изображение разбивается на прямоугольные ячейки одинакового размера. Размер сетки соответствует высоте и ширине одной ячейки (т.е. символу шрифта), полученным из кодовой книги на этапе обучения.
- Для каждой ячейки из кодовой книги выбирается символ, который заменит в ней «сырые» пиксели. Этим занимается дерево решений, в которое подаются эти пиксели.
- Большой набор изображений переводится в ASCII с учётом индекса структурного сходства и используется в качестве обучающего набора данных.
Руководство по началу работы
Встроить библиотеку в ваше приложение не составит труда. Для этого нужно лишь добавить ascii_art.c
и его заголовочный файл в ваше дерево исходного кода и скачать шестнадцатеричную модель, а также выполнить следующие вызовы API:
- Сначала вызовите AsciiArtInit, чтобы инициализировать структуру
ascii_render
, определенную в заголовочном файлеascii_art.h
. - Подготовьте изображение, которое нужно обработать, переведя его в оттенки серого. Для этого можно использовать внешнюю библиотеку вроде cvtColor из OpenCV или встроенный интерфейс AsciiArtLoadImage.
- Выделите буфер, достаточно большой для хранения всех выходных данных. Количество необходимых байтов можно получить через интерфейс AsciiArtTextBufSize. Этот шаг является необязательным, если вы хотите не выводить текст, а получить двоичное изображение из ASCII-символов.
- Наконец, преобразуйте входное изображение в символы ASCII с помощью AsciiArtRender.
Ниже представлена простая программа на С, которая которая демонстрирует типичное использование этих интерфейсов.
Также доступна демо-версия программы.
10К открытий10К показов