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

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

总第 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\

  • mac:/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 官方中文版教程来了

2. [资源]推荐一些Python书籍和教程,入门和进阶的都有!

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

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

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

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github|基于 Jittor 的 GAN 模型库

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 142 篇文章,本文大约 1300 字,阅读大约需要 5 分钟前言今天介绍一个 Github 项目---集成了 27 种 GAN 模型的 Jittor-GAN,项目地址:htt…

mongoDB分页的两种方法

mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的 下面这个是我的测试数据 db.test.find().sort({"age":1}); 第一种方法 查询第一页的数据:db.test.find().sort({"age":1}).limit(2); 查询第二页的数据:…

22 款设计和可视化神经网络的工具

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 143 篇文章,本文大约 3000 字,阅读大约需要 10 分钟前言深度学习领域,最常见的就是各种网络模型,那么在写论文或者文章,介绍…

计算机视觉研究生文献和复现哪个更重要?

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 144 篇文章,本文大约 6000 字,阅读大约需要 15 分钟前言这是来自知乎上的一个问题,但我觉得应该是对很多初入深度学习领域,不只是计算机…

Flex4 初始化过慢解决方法

昨天找了个免费.net空间,想测试一下做的一个简单Flex4 上传项目的效果。上传所有文件到网站之后,访问项目页面,进度条一点一点艰难的向前移动,到了100%后却不出现程序界面,等待一会儿还是没有出现,于是我去…

SRZoo--深度学习图像超分辨率工具

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 145 篇文章,本文大约 2100 字,阅读大约需要 7 分钟前言今天要介绍的是 Github 上一个基于深度学习的超分辨率工具--SRZoo,并且它还提供了多个预训练…

Scapy:局域网MAC地址扫描脚本

转载自:http://blog.sina.com.cn/s/blog_4b5039210100gn6k.html 未测试,回头研究研究。 用pythonscapy写的,只要双击.py文件即可,扫描当地局域网的主机MAC地址,并把结果写入文档保存。 代码如下:用到注册表…

基于 opencv 的图像处理入门教程

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 146 篇文章,本文大约 5000 字,阅读大约需要 20 分钟前言虽然计算机视觉领域目前基本是以深度学习算法为主,但实际上很多时候对图片的很多处理方法&…

新增两款Skin(clover与Valentine)

感谢沪江博客又为博客园提供两款漂亮的Skin。 clover: Valentine: 转载于:https://www.cnblogs.com/dudu/archive/2005/03/06/113853.html

同一页面引入多个JS文件的编码问题

原来只是觉得IE解析HTML文件的时候,需要知道其传输编码,才能正确处理,而从来没有在意过JavaScript文件的编码问题。结果今天发现同一页面中的多个JavaScript文件如果保存编码不同,也会有出错的问题。这个一般怎么会遇到呢&#xf…

简单盘点 CVPR2020 的图像合成论文

点击上方“算法猿的成长“,关注公众号,选择加“星标“或“置顶”总第 147 篇文章,本文大约 3500 字,阅读大约需要 10 分钟前言本文将简单盘点在 CVPR2020 上的图像合成方面的论文,然后给出下载地址以及开源代码 github…

泛化、实现、依赖和关联的区别

传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:a、实现表示类对接口的实现。UML图中实现使用一条带有空心三角箭头的虚线指向接口,如下: b、泛化表示类与类之间的继承关系、接口与接口之间…

目标检测学习笔记

看完吴恩达老师的 deeplearning.ai 课程目标检测这节课程的学习笔记。 文章目录1. 目标定位(object localization)2. 基于滑动窗口的目标检测算法滑动窗口的卷积实现Bounding Box预测(Bounding box predictions)交并比(Intersection over uni…

中小企业的软件需求问题

近年来,做为我国经济发展新兴动力的中小企业同时也成为了IT行业的热点市场。IT领域的顶级厂商在高端市场日趋饱和的情况下,正逐渐将眼光投向中小企业市场。而大多数IT厂商由于自身的资源和规模限制无法涉足高端用户,中小企业市场为这些厂商提…

数学学习笔记--线性代数

开始复习 AI 算法的基础–数学部分,主要是三方面的内容: 线性代数概率论微积分 参考内容如下: 《深度学习》https://github.com/scutan90/DeepLearning-500-questionshttps://github.com/sladesha/Reflection_Summary 本文是第一篇&#…

诺基亚S40手机联系人导入安卓手机

电话号码较少的话比较简单,拷贝到SIM卡中通过SIM卡中转,只是一般SIM卡只能存储200个左右,联系人比较多的情况就麻烦一点,今天帮导师把诺基亚5220中的800个电话转到三星S4中,综合下来还是使用了这种方法: 诺…

远程桌面不能连接,提示awgina.dll取代错误的解决办法

远程桌面不能连接,错误提示:您不能初始化一个远程桌面连接,因为在远程计算机上的windows登录软件被不兼容的软件c:\windows\system32\awgina.dll取代,如下图所示: 原因:如果计算机中装有SymantecpcAnywhere…

数学学习笔记--概率论

2. 概率论 2.1 概率分布与随机变量 2.1.1 机器学习为什么要使用概率 事件的概率是衡量该事件发生的可能性的量度。虽然在一次随机试验中某个事件的发生是带有偶然性的,但那些可在相同条件下大量重复的随机试验却往往呈现出明显的数量规律。 机器学习通常必须处理…