テキストを画像に変換する

Beginner

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

はじめに

この実験では、Python の Matplotlib ライブラリを使ってテキストを画像に変換する方法を学びます。画像やビジュアライゼーションにテキストを含めたい場合、または機械学習やコンピュータビジョンアプリケーションで使用するためのテキスト画像を作成したい場合に役立ちます。

VM のヒント

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