• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解PILLOW图片中加入中文的实例

python 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

索引

  • 简述

  • 准备

  • 示例

  • 效果图

  • 结语

简述

我在使用opencv2或3的时候想要在图片上添加中文文字,需要去下载Freetype库,编译好链接到opencv库中才能中文的输出。网上大部分在图片中插入中文的教程还是win+vs的配置教程。像我这种win下有环境,linux下有环境的人来说,想要同步代码无疑有点麻烦。好在有替代方法,也就是接下来要将的例子pillow。

准备

  1. pillow安装
    不能再简单了,你可以有如下安装方式:
    pip install pillow
    或者
    conda install pillow

  2. 下一个支持中文的字体库
    搜索关键词:ttf 字体。 下载一个你喜欢的字体风格库,文件的后缀一般为ttf。我下载了一个微软雅黑库,文件名就是msyh.ttf

示例

首先新建一个python文件:draw_chinese.py。示例代码ipython-notebook风格请去这里
1.导入库

import cv2from PIL import Image,ImageFont,ImageDrawfrom matplotlib.pyplot import imshowimport numpy as np

Image:对象的实例代表一张图片,可本文来源gaodai$ma#com搞$代*码*网以进行一些大小变换和仿射变换操作
ImageFont:用来加载准备阶段中下载的字体库文件
ImageDraw: 基于image对象,创建一个可以在Image实例上画线条、贴文字的对象。
2.创建一张图片

img = Image.new(mode="RGB",size=(400,150),color=(120,20,20))#或者从numpy对象中创建也行。可以把opencv的图片转为numpy,通过numpy连接两个图像处理库。#img = Image.fromarray(numpy_object)img.show()

3.加载字体库

path_to_ttf = r'data/msyh.ttf'font = ImageFont.truetype(path_to_ttf, size=25)#size 确定一个汉字的大小

4.新建一个画布

draw = ImageDraw.Draw( img )

6.在画布上恣意妄为

draw.text(xy=(30,30),text='Hello,南墙已破!',font=font)img.show()#当然也可以把这个写好字的图片转换回numpy#img2array = np.asanyarray(img)

效果图

结语

这个方法不用自己去下载编译Freetype库,pillow的安装也很简单。写好后的代码python2,python3均可用。跨平台也没事儿。算是曲线解决了opencv原生不支持中文字体的问题了吧。
pillow这个库可以做一部分opencv的工作,到现在我发现一个比较常用但是pillow没有的设置就是画矩形框的时候不能设置矩形框边线的宽度,需要自己手动实现:每次在原有基础上增加或减少一个像素点的坐标位置重复画框,达到增加宽度的效果。而opencv只需要给一个width参数就可以了。

以上就是详解PILLOW图片中加入中文的实例的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解PILLOW图片中加入中文的实例

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址