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模拟百度登录实例详解
Jan 20 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
详解Python3 基本数据类型
Apr 19 Python
python对csv文件追加写入列的方法
Aug 01 Python
python可视化实现KNN算法
Oct 16 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
Aug 17 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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
php开启安全模式后禁用的函数集合
2011/06/26 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
PHP实现文件上传与下载
2020/08/28 PHP
js版本A*寻路算法
2006/12/22 Javascript
Jquery ui css framework
2010/06/28 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js数组的操作指南
2014/12/28 Javascript
js重写方法的简单实现
2016/07/10 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
Python比较两个图片相似度的方法
2015/03/13 Python
Python学习入门之区块链详解
2017/07/25 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
在python3中实现更新界面
2020/02/21 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
会计专业自荐信范文
2013/12/02 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
委托书格式要求
2015/01/28 职场文书
个人更名证明
2015/06/23 职场文书
详解如何在Canvas中添加事件的方法
2021/04/17 Javascript