python文字轉圖片(二值、RGB)以及numpy數組

文字一般使用unicode等編碼的形式在計算機中表示,但是其形態本身也很有價值。如果能夠把文字轉爲圖片,就可以做一些應用,比如:

  • 基於最近鄰查找來實現簡單的OCR文字識別
  • 從像素中提取特徵用於機器學習,如Glyce
  • 其他的各種腦洞,比如計算字符所佔像素數/長/寬之類的

其實現的思路不是那麼直截了當,但是想通了就不困難了,就是在畫布上畫一個字。說到畫圖,肯定要想到python中的PIL/Pillow庫了。代碼實現如下:

from PIL import Image, ImageDraw, ImageFont
import numpy as np
import matplotlib.pyplot as plt

if __name__ == "__main__":
    # 預設合適的字體,對於中文尤其重要,否則會亂碼,這裏使用常見的黑體
    fontsize = 16
    font = ImageFont.truetype("simhei", fontsize, encoding='utf-8')
    # 灰度圖
    image = Image.new('1', (fontsize,fontsize), 'white')
    draw = ImageDraw.Draw(image)
    draw.text((0,0), '你', font=font)
    # 或image.show() 使用系統自帶圖片查看器顯示
    plt.imshow(image)  # 使用matplotlib顯示
    plt.show()
    print(np.array(image, dtype=int))  # 轉數組
    # RGB圖
    image = Image.new('RGB', (fontsize,fontsize))
    draw = ImageDraw.Draw(image)
    draw.text((0,0), '你', font=font)
    plt.imshow(image)
    plt.show()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章