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 socket C/S结构的聊天室应用实现
Nov 30 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
python中的闭包用法实例详解
May 05 Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 Python
利用python求积分的实例
Jul 03 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
opencv3/C++图像像素操作详解
Dec 10 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
python实现简单的购物程序代码实例
Mar 03 Python
解决pycharm安装第三方库失败的问题
May 09 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
python 利用panda 实现列联表(交叉表)
Feb 06 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随机显示指定文件夹下图片的方法
2015/07/13 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
jQuery实现ichat在线客服插件
2014/12/29 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
基于JavaScript实现本地图片预览
2017/02/08 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
2018/06/07 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Python深入学习之上下文管理器
2014/08/31 Python
Python实现的科学计算器功能示例
2017/08/04 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
煤矿机修工岗位职责
2014/02/07 职场文书
求职意向书
2014/07/29 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
稽核岗位职责
2015/02/10 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android