Преобразование текстов в изображения

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом практическом занятии мы научимся использовать библиотеку Matplotlib для Python для преобразования текстов в изображения. Это полезно, когда мы хотим вставить текст в изображение или визуализацию, или когда хотим создать изображения текста для использования в приложениях машинного обучения или компьютерного зрения.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня продвинутый с процентом завершения 46%. Он получил 100% положительных отзывов от учащихся.

Импортируем необходимые библиотеки

Начнем с импорта необходимых библиотек, в которых включаются Matplotlib и BytesIO.

from io import BytesIO
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.transforms import IdentityTransform

Преобразуем текст в RGBA

Для преобразования текста в изображение мы нарисуем его на пустой и прозрачной фигуре, сохраним фигуру в временный буфер, а затем загрузим буфер с использованием plt.imread.

def text_to_rgba(s, *, dpi, **kwargs):
    fig = Figure(facecolor="none")
    fig.text(0, 0, s, **kwargs)
    with BytesIO() as buf:
        fig.savefig(buf, dpi=dpi, format="png", bbox_inches="tight", pad_inches=0)
        buf.seek(0)
        rgba = plt.imread(buf)
    return rgba

Рисуем изображения текста на фигуре

После того, как мы преобразовали текст в RGBA-изображение, мы можем нарисовать его на фигуре с использованием .Figure.figimage.

fig = plt.figure()
rgba1 = text_to_rgba(r"IQ: $\sigma_i=15$", color="blue", fontsize=20, dpi=200)
rgba2 = text_to_rgba(r"some other string", color="red", fontsize=20, dpi=200)

fig.figimage(rgba1, 100, 50)
fig.figimage(rgba2, 100, 150)

plt.show()

Рисуем тексты на фигуре с позиционированием в пиксельных координатах

Вместо этого мы можем напрямую нарисовать текст на фигуре с позиционированием в пиксельных координатах, используя .Figure.text вместе с .transforms.IdentityTransform.

fig.text(100, 250, r"IQ: $\sigma_i=15$", color="blue", fontsize=20, transform=IdentityTransform())
fig.text(100, 350, r"some other string", color="red", fontsize=20, transform=IdentityTransform())

plt.show()

Резюме

В этом практическом занятии мы узнали, как использовать Matplotlib для преобразования текстов в изображения. Мы использовали функцию text_to_rgba для преобразования текста в RGBA-изображение, а затем использовали .Figure.figimage и .Figure.text для рисования изображения текста или текста на фигуре. Это полезно для создания изображений текста для использования в приложениях машинного обучения или компьютерного зрения, или для включения текста в визуализации.