文字转图片(支持中文)
最近在做中文输出时,发现opencv的putText方法不支持中文输出。导致中文在图片或者视频中都是问号(?)。查阅相关资料,有用pillow 和 freetype 进行格式转换,可以参考CSDN博客。
本文另辟蹊径,现将文字转换成图片,再进行图像的混合(blend)。
查阅相关资料,目前将文字转为图像的方法有两种,一种是利用 pillow 模块,一种是利用 pygame 模块。下面主要介绍如何利用 pygame 模块进行文字转图片。
pygame的安装
pip install pygame
文字转图片
import pygame
pygame.init() #需要初始化
text = u"Hello Word! 世界,你好!" #将文本以unicode编码格式存储
# my_font = pygame.font.SysFont(“arial”, 16) # 使用系统字体
font = pygame.font.Font("F:\\SIMSUN.TTC", 60) #设置字体
ftext = font.render(text, True, (255, 255, 255, 0.3), (0,0,0)) #渲染字体
pygame.image.save(ftext, "image.png") #存储图像
其中,“F:\SIMSUN.TTC"是本人下载的支持中文输出的一种字体。第一个参数是字体名,第二个自然就是大小,一般来说“Arial”字体在很多系统都是存在的,如果找不到的话,就会使用一个默认的字体,这个默认的字体和每个操作系统相关,你也可以使用**pygame.font.get_fonts()**来获得当前系统所有可用字体。
font.render() 第一个参数是写的文字;第二个参数是个布尔值,以为这是否开启抗锯齿,就是说True的话字体会比较平滑,不过相应的速度有一点点影响;第三个参数是字体的颜色;第四个是背景色,如果你想没有背景色(也就是透明),那么可以不加这第四个参数。比如上述代码,(255, 255, 255, 0.3) 是字体颜色,元组第四个代表alpha值,存为png图像会是RGBA格式;(0, 0, 0)是背景颜色,缺省为None(透明)
结果
1)白色字体,黑色背景
2)黑色字体,白色背景