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模块restful使用方法实例
Dec 10 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
python日志记录模块实例及改进
Feb 12 Python
Python使用sftp实现上传和下载功能(实例代码)
Mar 14 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
python 批量修改/替换数据的实例
Jul 25 Python
浅谈Python 多进程默认不能共享全局变量的问题
Jan 11 Python
python如何实现视频转代码视频
Jun 17 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
python中count函数简单的实例讲解
Feb 06 Python
numpy矩阵数值太多不能全部显示的解决
May 14 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 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
javascript 函数式编程
2007/08/16 Javascript
javascript 写类方式之四
2009/07/05 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
Python实现石头剪刀布游戏
2021/01/20 Python
升职自荐信范文
2013/10/05 职场文书
工作失职检讨书范文
2014/01/16 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers