将文本转换为图像

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 Python 的 Matplotlib 库将文本转换为图像。当我们想要在图像或可视化中包含文本,或者想要创建用于机器学习或计算机视觉应用的文本图像时,这会很有用。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 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 将文本图像或文本绘制到图形上。这对于创建用于机器学习或计算机视觉应用的文本图像,或者在可视化中包含文本很有用。