文字一般使用unicode等编码的形式在计算机中表示,但是其形态本身也很有价值。如果能够把文字转为图片,就可以做一些应用,比如:
- 基于最近邻查找来实现简单的OCR文字识别
- 从像素中提取特征用于机器学习,如Glyce
- 其他的各种脑洞,比如计算字符所占像素数/长/宽之类的
其实现的思路不是那么直截了当,但是想通了就不困难了,就是在画布上画一个字。说到画图,肯定要想到python中的PIL/Pillow库了。代码实现如下:
代码语言:javascript复制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()