Introdução
Neste laboratório, aprenderemos como usar a biblioteca Matplotlib do Python para converter textos em imagens. Isso é útil quando queremos incluir texto em uma imagem ou visualização, ou quando queremos criar imagens de texto para uso em aplicações de machine learning (aprendizado de máquina) ou computer vision (visão computacional).
Dicas da VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido às limitações do Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar as bibliotecas necessárias
Começaremos importando as bibliotecas necessárias, que incluem Matplotlib e BytesIO.
from io import BytesIO
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.transforms import IdentityTransform
Converter texto para RGBA
Para converter texto em uma imagem, vamos desenhá-lo em uma figura vazia e transparente, salvar a figura em um buffer temporário e, em seguida, carregar o buffer usando 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
Desenhar imagens de texto em uma figura
Uma vez que convertemos o texto em uma imagem RGBA, podemos desenhá-lo em uma figura usando .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()
Desenhar textos em uma figura com posicionamento em coordenadas de pixel
Alternativamente, podemos desenhar diretamente texto em uma figura com posicionamento em coordenadas de pixel usando .Figure.text juntamente com .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()
Resumo
Neste laboratório, aprendemos como usar Matplotlib para converter textos em imagens. Usamos a função text_to_rgba para converter texto em uma imagem RGBA e, em seguida, usamos .Figure.figimage e .Figure.text para desenhar a imagem de texto ou o texto em uma figura. Isso é útil para criar imagens de texto para uso em aplicações de aprendizado de máquina ou visão computacional, ou para incluir texto em visualizações.