python文字转图片(二值、RGB)以及numpy数组

2020-05-09 17:02:23 浏览数 (1)

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

0 人点赞