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多线程抓取天涯帖子内容示例
Apr 03 Python
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
python实现微信小程序自动回复
Sep 10 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
python UDF 实现对csv批量md5加密操作
Jan 01 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 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
根德YB400的电路分析
2021/03/02 无线电
PHP语法速查表
2006/12/06 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
js格式化时间小结
2014/11/03 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
bootstrap 通过加减按钮实现输入框组功能
2017/11/15 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
[02:28]PWL开团时刻DAY3——Ink Ice与DeMonsTer之间的勾心斗角
2020/11/03 DOTA
[01:20]PWL开团时刻DAY9——听说潮汐没用?
2020/11/10 DOTA
python中使用正则表达式的后向搜索肯定模式(推荐)
2017/11/11 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python 生成图形验证码的方法示例
2018/11/11 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
税务职业生涯规划书范文
2014/09/16 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
外出听课学习心得体会
2016/01/15 职场文书