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系列之数据处理编程实例(一)
May 22 Python
详解Python中的__new__()方法的使用
Apr 09 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
Python实现的网页截图功能【PyQt4与selenium组件】
Jul 12 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
python中for in的用法详解
Apr 17 Python
python批量提取图片信息并保存的实现
Feb 05 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
Pygame如何使用精灵和碰撞检测
Nov 17 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.MVC的模板标签系统(一)
2006/09/05 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
JS常用字符串处理方法应用总结
2014/05/22 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
js实现TAB切换对应不同颜色的代码
2015/08/31 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
python 获取字符串MD5值方法
2018/05/29 Python
python爬虫容易学吗
2020/06/02 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
英国床和浴室商场:Bed & Bath Emporium
2018/05/20 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
大学生优秀班干部事迹材料
2014/05/26 职场文书
语文教育专业求职信
2014/06/28 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
网络妈妈观后感
2015/06/08 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers