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 23 Python
python控制台英汉汉英电子词典
Apr 23 Python
python实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
浅谈Python的异常处理
Jun 19 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
谈谈python中GUI的选择
Mar 01 Python
python Celery定时任务的示例
Mar 13 Python
django admin组件使用方法详解
Jul 19 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Python中的 Set 与 dict
Mar 13 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分页显示制作详细讲解
2006/12/05 PHP
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
python中文乱码的解决方法
2013/11/04 Python
Python3中多线程编程的队列运作示例
2015/04/16 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
产品销售计划书
2014/05/04 职场文书
端午节活动总结
2014/08/26 职场文书
工作推荐信模板
2015/03/25 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
《比的意义》教学反思
2016/02/18 职场文书
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL