简介
在本实验中,我们将学习如何使用 Python 的 Matplotlib 库将文本转换为图像。当我们想要在图像或可视化中包含文本,或者想要创建用于机器学习或计算机视觉应用的文本图像时,这会很有用。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 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 将文本图像或文本绘制到图形上。这对于创建用于机器学习或计算机视觉应用的文本图像,或者在可视化中包含文本很有用。