前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在图片上添加文本信息

如何在图片上添加文本信息

作者头像
kbsc13
发布2020-06-03 14:03:10
1.9K0
发布2020-06-03 14:03:10
举报
文章被收录于专栏:AI 算法笔记AI 算法笔记

前言

给图片添加文本信息是非常常见的需求,通常需要添加的文本信息分为中文文字或者是非中文的文字,比如数字和英文,对这两类的实现方法也有所不同,非中文的文本信息可以直接用 opencv 实现,而中文文本需要使用 PIL ,因为 opencv 不支持中文。

所以接下来就分别介绍这两种实现方法。

opencv 添加文本信息

opencv 添加文本信息的函数是 putText ,实现代码如下所示,这个函数的参数主要是:

  • img:原图
  • text:需要添加的文字
  • position:文字起始的位置,tuple 元组类型
  • font: 字体类型,这里用了默认字体,实际上还有其他几种字体,具体可以查看官方文档:https://docs.opencv.org/2.4/modules/core/doc/drawing_functions.html#void%20putText(Mat&%20img,%20const%20string&%20text,%20Point%20org,%20int%20fontFace,%20double%20fontScale,%20Scalar%20color,%20int%20thickness,%20int%20lineType,%20bool%20bottomLeftOrigin
  • font_scale: 字体大小
  • font_color:字体的颜色
  • thickness: 线的粗细
代码语言:javascript
复制
import cv2
%matplotlib inline
import matplotlib.pyplot as plt

# opencv 
img = cv2.imread('plane.jpg')
# 添加的文字
text = 'plane'
# 文字起始的位置
position = (600, 100)
# 字体大小
font_scale = 3
# 字体颜色
font_color = (0, 0, 255)
# 默认字体
font=cv2.FONT_HERSHEY_SIMPLEX
# 线的粗细
thickness = 3
cv2.putText(img, text, position, font, font_scale, font_color, thickness, cv2.LINE_AA)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

结果如下所示:


PIL 添加中文文本信息

如果是中文文字,那么就必须用 PIL 来实现了,同样先上实现的代码:

代码语言:javascript
复制
from PIL import Image, ImageDraw, ImageFont
%matplotlib inline
import matplotlib.pyplot as plt

# PIL 绘制中文
img = Image.open('plane.jpg')
# 自定义字体
font = ImageFont.truetype("/System/Library/Fonts/PingFang.ttc", 60)
draw = ImageDraw.Draw(img)
# 文字起始坐标
position = (600, 100)
# 文字
text = '纸飞机'
# 文字颜色
color = (0, 0, 255)
draw.text(position, text, font=font, fill=color)
plt.imshow(img)

结果如下所示:

基本的参数其实和 opencv 的函数一样,同样需要指定文字、字体、起始位置、字体大小和颜色,其中字体可以是自定义的字体,在官方文档中给出了不同系统自带字体存放的位置:

  • windows:在 c:\Windows\Fonts\
  • mac:/Library/Fonts/, /System/Library/Fonts/ 或者是 ~/Library/Fonts/
  • linux: 在 /usr/share/fonts/

https://pillow.readthedocs.io/en/stable/reference/ImageFont.html#PIL.ImageFont.truetype

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法猿的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • opencv 添加文本信息
  • PIL 添加中文文本信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档