文字一般使用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()