Введение
В этом практическом занятии мы научимся использовать библиотеку Matplotlib для Python для преобразования текстов в изображения. Это полезно, когда мы хотим вставить текст в изображение или визуализацию, или когда хотим создать изображения текста для использования в приложениях машинного обучения или компьютерного зрения.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Начнем с импорта необходимых библиотек, в которых включаются 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 для рисования изображения текста или текста на фигуре. Это полезно для создания изображений текста для использования в приложениях машинного обучения или компьютерного зрения, или для включения текста в визуализации.