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

点击上方“ 算法猿的成长 “, 关注公众号,选择加“星标“或“置顶”

总第 141 篇文章,本文大约  1500  字,阅读大约需要   5  分钟

前言

给图片添加文本信息是非常常见的需求,通常需要添加的文本信息分为中文文字或者是非中文的文字,比如数字和英文,对这两类的实现方法也有所不同,非中文的文本信息可以直接用 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: 线的粗细

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 来实现了,同样先上实现的代码:

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\
  • /Library/Fonts/
    /System/Library/Fonts/
    ~/Library/Fonts/
    
  • linux: 在 /usr/share/fonts/

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

精选AI文章

1.   2020年计算机视觉学习指南

2.  是选择Keras还是PyTorch开始你的深度学习之旅呢?

3.  编写高效的PyTorch代码技巧(上)

4.  编写高效的PyTorch代码技巧(下)

5.  深度学习算法简要综述(上)

6.  深度学习算法简要综述(下)

7.  10个实用的机器学习建议

8.  实战|手把手教你训练一个基于Keras的多标签图像分类器

精选python文章

1.  python数据模型

2. python版代码整洁之道

3.  快速入门 Jupyter notebook

4. Jupyter 进阶教程

5. 10个高效的pandas技巧

精选 教程资源文章

1.  [资源分享] TensorFlow 官方中文版教程来了

3.   [Github项目推荐] 推荐三个助你更好利用Github的工具

4.  Github上的各大高校资料以及国外公开课视频

5.  GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

欢迎关注我的微信公众号-- 算法猿的成长 ,或者扫描下方的二维码,大家一起交流,学习和进步!

如果觉得不错,在看、转发就是对小编的一个支持!

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章