Colaboratoryで日本語フォントを画像に入れる


  1. Colabのローカルにフォントを入れる
  2. OpenCVで画像読み込み
  3. PILでフォント描画
  4. OpenCVで画像表示

こちらを参考にさせて頂きました。
Watlab | Pythonで画像に日本語文字を入れる方法
https://watlab-blog.com/2019/08/25/image-text/
Google Colaboratoryに好きなフォントを入れてmatplotlibとかで使う方法
https://qiita.com/nkay/items/b2d50349a3f5d38df45b

font.py
#フォントをColabローカルにインストール
from google.colab import drive
drive.mount("/content/gdrive")
!cp -a "gdrive/My Drive/font/" "/usr/share/fonts/"

from PIL import Image, ImageFont, ImageDraw
import cv2
import numpy as np
from google.colab.patches import cv2_imshow

# 画像に文字を入れる関数
def img_add_msg(img, message):
    font_path = '/usr/share/fonts/meiryo.ttc'           # Colabのフォントへのパス
    font_size = 100                                     
    font = ImageFont.truetype(font_path, font_size)     # PILでフォントを定義
    img = Image.fromarray(img)                          # cv2(NumPy)型の画像をPIL型に変換
    draw = ImageDraw.Draw(img)                          # 描画用のDraw関数

    # テキストを描画(位置、文章、フォント、文字色(BGR+α)を指定)
    draw.text((50, 50), message, font=font, fill=(255, 255, 255, 0))
    img = np.array(img)                                 # PIL型の画像をcv2(NumPy)型に変換
    return img                                          # 文字入りの画像を返す

img = cv2.imread('/content/gdrive/My Drive/hoge/huga.jpg', 1)     # 画像読み込み
message = 'ハローワールド'                                           # 画像に入れる日本語
img = img_add_msg(img, message)                        

# 画像表示
cv2_imshow(img)

はい、と。