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中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
解读python logging模块的使用方法
Apr 17 Python
查看Django和flask版本的方法
May 14 Python
深入分析python中整型不会溢出问题
Jun 18 Python
将Python字符串生成PDF的实例代码详解
May 17 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
python DataFrame转dict字典过程详解
Dec 26 Python
简单了解django文件下载方式
Feb 10 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
python获取淘宝服务器时间的代码示例
Apr 22 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
AngularJS的ng Http Request与response格式转换方法
2016/11/07 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
使用bootstraptable插件实现表格记录的查询、分页、排序操作
2017/08/06 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue写一个组件
2018/04/09 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
python使用wxpython开发简单记事本的方法
2015/05/20 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python常用运维脚本实例小结
2020/02/14 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
创建文明学校实施方案
2014/03/11 职场文书
绘画专业自荐信
2014/07/04 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
四大名著读书笔记
2015/06/25 职场文书
入队仪式主持词
2015/07/04 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL