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之坑爹的字符编码
Sep 28 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
Nov 10 Python
Python中文竖排显示的方法
Jul 28 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
Python必须了解的35个关键词
Jul 16 Python
Django返回HTML文件的实现方法
Sep 17 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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
smarty实现多级分类的方法
2014/12/05 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
asp 的 分词实现代码
2007/05/24 Javascript
javascript 写类方式之三
2009/07/05 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
js判断当前页面用什么浏览器打开的方法
2016/01/06 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
实例代码讲解Python 线程池
2020/08/24 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
如何进行有效的自我评价
2013/09/27 职场文书
同学会邀请书大全
2014/01/12 职场文书
毕业生自荐信格式
2014/03/07 职场文书
三八节标语
2014/06/27 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
2014年民警工作总结
2014/11/25 职场文书
教师外出学习心得体会
2016/01/18 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python