めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

pythonで画像に日本語をプロットする

opencvのputtext関数では(手間をかけないと)できないらしいのとフォントの選択肢が少ないので、付け焼き刃ですが一時的にmatplotlibのfontpropertyから日本語のフォントを指定してプロットしました。

コード

from matplotlib.font_manager import FontProperties
fp = FontProperties(fname=r'/Library/Fonts/Osaka.ttf', size=14)

def PutText(N=1600, rseed=42, moji1='ああ', moji2='ああ', labelnum=10):
    fig, ax = plt.subplots(figsize=(4, 4))
    ax.axis('off')
    ax.text(0.5, 0.7, moji1, va='center', ha='center', size=35, fontproperties=fp)
    ax.text(0.5, 0.2, moji2, va='center', ha='center', size=35, fontproperties=fp)
    fig.savefig('temp/temp.png')
    plt.close(fig)
    
    data = cv2.imread('temp/temp.png')
    return data

plt.imshow(PutText())
moji.shape

出力

f:id:misos:20180430105452p:plain

フォント一覧の取得

フォントを簡単に切り替えつつ文字をプロットしたいので

import matplotlib
matplotlib.font_manager.findSystemFonts()

としてフォント一覧をリストで取得。

['/usr/X11/lib/X11/fonts/OTF/SyrCOMMalankara.otf',
 '/Library/Fonts/DIN Condensed Bold.ttf',
 '/usr/X11/lib/X11/fonts/OTF/SyrCOMBatnan.otf',
 '/Library/Fonts/Tahoma Bold.ttf',
 '/Library/Fonts/Andale Mono.ttf',
 '/usr/X11/lib/X11/fonts/OTF/SyrCOMTalada.otf',
 '/Library/Fonts/Impact.ttf',
 '/Library/Fonts/Hoefler Text Ornaments.ttf',
 '/Library/Fonts/STIXGeneralBolIta.otf',
 '/Library/Fonts/STIXSizFourSymBol.otf',
 '/Library/Fonts/Osaka.ttf',
 '/Library/Fonts/Trebuchet MS.ttf',
 '/Library/Fonts/儷黑 Pro.ttf',
 '/Library/Fonts/Yu Gothic Bold.otf',
 '/System/Library/Fonts/Apple Braille Pinpoint 6 Dot.ttf',
 '/Library/Fonts/Arial Bold Italic.ttf',
 '/usr/X11/lib/X11/fonts/OTF/SyrCOMMardin.otf',
 '/Library/Fonts/Bradley Hand Bold.ttf',
 '/Library/Fonts/Microsoft Sans Serif.ttf',
 '/Library/Fonts/Luminari.ttf',
 '/Library/Fonts/Verdana Bold Italic.ttf',
 '/Library/Fonts/STIXNonUniBolIta.otf',
 '/Library/Fonts/Trebuchet MS Bold Italic.ttf',
 '/System/Library/Fonts/Apple Braille Outline 6 Dot.ttf',
 '/Library/Fonts/WawaTC-Regular.otf', ...]

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。