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文件拆分与重组实例
Dec 10 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
Python操作qml对象过程详解
Sep 26 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
Python3 assert断言实现原理解析
Mar 02 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
numpy的Fancy Indexing和array比较详解
Jun 11 Python
如何表示python中的相对路径
Jul 08 Python
如何基于python把文字图片写入word文档
Jul 31 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 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
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
php读取excel文件的简单实例
2013/08/26 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
用JavaScript获取网页中的js、css、Flash等文件
2006/12/20 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
js中less常用的方法小结
2017/08/09 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
js中Function引用类型常见有用的方法和属性详解
2019/12/11 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
python中global与nonlocal比较
2014/11/21 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
升职自荐信
2013/11/28 职场文书
教师申诉制度
2014/01/29 职场文书
财务部总监岗位职责
2014/03/12 职场文书
商场广播稿范文
2015/08/19 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android