はじめに
この実験では、Python の Matplotlib ライブラリを使ってテキストを画像に変換する方法を学びます。画像やビジュアライゼーションにテキストを含めたい場合、または機械学習やコンピュータビジョンアプリケーションで使用するためのテキスト画像を作成したい場合に役立ちます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、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を使ってテキスト画像またはテキストを図に描画しました。これは、機械学習やコンピュータビジョンアプリケーションで使用するテキストの画像を作成するため、またはビジュアライゼーションにテキストを含めるために役立ちます。