Pythonで画像の色に合わせたワードクラウドを作ってみた

Pythonでワードクラウドを作ってみました。今回は、画像の色に合わせたワードクラウドです。プロ生ちゃんに実験台になっていただきました。

目次

  1. WordCloudクラスに色つきのマスクを指定する
  2. ImageColorGeneratorクラス
  3. 色付きマスクで作成した例

WordCloudクラスに色つきのマスクを指定する

Pythonの wordcloudモジュール でワードクラウドを作成します。

wordcloudモジュールの WordCloudクラスのコンストラクターのパラメーター に、マスクの指定があります。マスクはndarrayの形式で指定します。画素に白色を指定するとマスクされます。

色つきの画像をマスクに使用する場合は、その色をカラーマップにできます。

ImageColorGeneratorクラス

wordcloudのクラスの一つに、ImageColorGeneratorというものがあります。読んで字のごとく、色情報を作るクラスです。

C = wordcloud.ImageColorGenerator(image, [default_color])
変数 内容
image ndarray ワードクラウドを作る際に使う画像。
default_color tuple 省略可。既定値はNone。色情報を作った画像よりもキャンバスサイズが大きい場合の色の指定。(r, g, b)
C   キャンバスの色情報を示すオブジェクト。

このオブジェクトをWordCloudクラスのコンストラクターパラメーターとして渡します。

色付きマスクで作成した例

プロ生ちゃんの画像をワードクラウドにしてみます。

画像は プロ生ちゃんのサイト からダウンロードしたものを、25%のサイズにリサイズしました。

テキストの方はwordcloudモジュールのGitHubリポジトリーのreadme.mdです。

from PIL import Image
import numpy as np
from wordcloud import WordCloud, ImageColorGenerator

# 元になるテキストの読み込み
with open('readme.md', mode='rt', encoding='utf-8') as fi:
    source_text = fi.read()

# マスクを作成する
mask_array = np.array(Image.open('kei.jpg'))

image_color = ImageColorGenerator(mask_array)

# ワードクラウドを作成する
wc = WordCloud(mask=mask_array, color_func=image_color, background_color='white').generate(source_text)

# そのままファイルに保存する場合はto_fileメソッドで
wc.to_file('out.png')

# PILで表示する
#image_array = wc.to_array()
#img = Image.fromarray(image_array)
#img.show()

マスク用に読み込んだ画像を、そのままマスクと色情報に使用します。

ImageColorGeneratorで作ったオブジェクトをWordCloudコンストラクターに渡すときに指定するパラメータは、color_funcです。

では実行例です。

入力したマスク用画像はこれです。 プログラミング生放送 からダウンロードしたixyさんのイラストをペイントで25%サイズにリサイズしたものです。

入力画像

出力結果はこうなります。

出力画像

まあまあそれっぽい。

広告

Pythonでワードクラウドカテゴリの投稿