Python在图片中添加文字的两种方法


Posted in Python onApril 29, 2017

本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧

一、使用OpenCV

在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦。OpenCV中并没有使用自定义字体文件的函数,这不仅意味着我们不能使用自己的字体,而且意味着他无法显示中文字符。这还是非常要命的事情。而且他显示出来的文字位置也不太好控制。比如下面的代码,他想做的仅仅是显示数字3:

代码:

#coding=utf-8
import cv2
import numpy as np
from pylab import *
%matplotlib inline
font=cv2.FONT_HERSHEY_SIMPLEX#使用默认字体
im=np.zeros((50,50,3),np.uint8)#新建图像,注意一定要是uint8
img=cv2.putText(im,'3',(0,40),font,1.2,(255,255,255),2)#添加文字,1.2表示字体大小,(0,40)是初始的位置,(255,255,255)表示颜色,2表示粗细
imshow(img)

结果:

Python在图片中添加文字的两种方法

我么可以发现文字出现的位置并不怎么好把握,初始的坐标默认是指左下角的坐标,不怎么方便。而且显示出文字以后,我们不好掌握他实际占的位置和大小。

不过有一点方便的是,我们可以随意改变他的粗细,而不用更换字体。这一点是下面使用PIL进行绘图所不具备的优点。

二、使用PIL

同样为了生成数字3,下面是使用PIL进行的操作:

代码:

import Image,ImageFont,ImageDraw
import numpy as np
from pylab import *
%matplotlib inline
font = ImageFont.truetype('3.ttf',50) #使用自定义的字体,第二个参数表示字符大小
im = Image.new("RGB",(50,50))

#生成空白图像
draw = ImageDraw.Draw(im)



 #绘图句柄
x,y=(0,0)








#初始左上角的坐标
draw.text((x,y), '3', font=font)

#绘图
offsetx,offsety=font.getoffset('3')
#获得文字的offset位置
width,height=font.getsize('3')

 #获得文件的大小
im=np.array(im)
cv2.rectangle(im,(offsetx+x,offsety+y),(offsetx+x+width,offsety+y+height),(255,255,255),1)#绘出矩形框
imshow(im)

结果:

Python在图片中添加文字的两种方法

我们可以发现,PIL支持使用自定义的字体文件,而且能够提供字体所占位置的详细信息,我们可以精确的确定文字所占的位置,在应用中特别有用。唯一的不足就是他不能改变字体的粗细(毕竟这用的是字体模板)。

实际应用中看来还要在这两种方法中择优使用。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python迭代器和生成器介绍
Mar 06 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
python设置环境变量的作用和实例
Jul 09 Python
pyinstaller参数介绍以及总结详解
Jul 12 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
pyinstaller将含有多个py文件的python程序做成exe
Apr 29 Python
python能做哪方面的工作
Jun 15 Python
详解python中的闭包
Sep 07 Python
Python实现对字符串的加密解密方法示例
Apr 29 #Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 #Python
python基于pyDes库实现des加密的方法
Apr 29 #Python
Python简单实现Base64编码和解码的方法
Apr 29 #Python
Python变量和字符串详解
Apr 29 #Python
python实现unicode转中文及转换默认编码的方法
Apr 29 #Python
Python 正则表达式实现计算器功能
Apr 29 #Python
You might like
DOMXML函数笔记
2006/10/09 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
yii数据库的查询方法
2015/12/28 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
JS交换变量的方法
2015/01/21 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
js 显示日期时间的实例(时间过一秒加1)
2017/10/25 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
2017/10/26 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
js实现简单模态框实例
2018/11/16 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
学习python (1)
2006/10/31 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python默认参数调用方法解析
2020/02/09 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
Java面试题及答案
2012/09/08 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
优秀学生干部推荐材料
2014/02/03 职场文书
校园环保建议书
2014/05/14 职场文书
2015年个人审计工作总结
2015/04/07 职场文书