python文字教程-Python在图片中添加文字的两种方法
本文主要介绍的是利用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)
结果:
我么可以发现文字出现的位置并不怎么好把握,初始的坐标默认是指左下角的坐标,不怎么方便。而且显示出文字以后,我们不好掌握他实际占的位置和大小。
不过有一点方便的是,我们可以随意改变他的粗细,而不用更换字体。这一点是下面使用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)
结果:
我们可以发现,PIL支持使用自定义的字体文件,而且能够提供字体所占位置的详细信息,我们可以精确的确定文字所占的位置,在应用中特别有用。唯一的不足就是他不能改变字体的粗细(毕竟这用的是字体模板)。
实际应用中看来还要在这两种方法中择优使用。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
python文字教程-Python在图片中添加文字的两种方法相关推荐
- Python计算程序运行时间秒级/毫秒级的两种方法datetime和time
Python计算程序运行时间秒级/毫秒级的两种方法datetime和time 简单粗暴,先上代码: import datetime import time# 方法一:datetime.datetime ...
- 计算机增加用户win7,win7系统添加用户组的两种方法(图文)
本教程和大家分享win7纯净版系统添加用户组的两种方法,Win7用户组管理可以用来查看和管理电脑的本地用户和组,比如删除用户,更改用户权限等.可是在win7系统中如何添加用户组呢?其实添加用户组的方法 ...
- java在文件的后面添加_java 在file的尾部添加数据的两种方法总结
java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...
- html+input改变图标,JS Input里添加小图标的两种方法
我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 将小图标当做input的背景来插入,直接上代码吧: Box{ height: 50px; backgroun ...
- java 文件尾部_java 在file的尾部添加数据的两种方法总结
java 在file的尾部添加数据的两种方法总结 问题描述: 在文件的末尾追加内容 方法1:利用RandomAccessFile类 1.将randomAccessFile模式设置为rw 2将rando ...
- html密码框怎么添加小图标,JS Input里添加小图标的两种方法
我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: *{ margin: 0; padding: 0 ...
- input 单击 图标_JS Input里添加小图标的两种方法
我们在做网页的时候,经常需要在input里面添加小图标,那么这里就介绍比较常见的两种方法. 方法一 将小图标当做input的背景来插入,直接上代码吧: *{ margin: 0; padding: 0 ...
- js循环添加事件的两种方法
js循环添加事件的两种方法 选择下拉列表中的一个li将文本传到框中 问题:写此二级菜单时用到的方法不好,对此进行优化 原始js代码: <script>// 思路:1.点击下拉框a时,ul中 ...
- 【vmware虚拟机上网教程】虚拟机如何上网?两种方法简单易学(安卓Android x86虚拟机演示)
[vmware虚拟机上网教程]虚拟机如何上网?两种方法简单易学(安卓Android x86虚拟机演示) 启动安卓虚拟机,点击打开虚拟机,然后找到虚拟机的文件. 虚拟机列表中有一个开启此虚拟机的按钮.点 ...
- python字符串成熟编码_python字符串转公式两种方法获取网页编码python版
在web开发的时候我们经常会遇到网页抓取和分析,各种语言都可以完成这个功能.我喜欢用python实现,因为python提供了很多成熟的模块,可以很方便的实现网页抓取. 但是在抓取过程中会遇到编码的问题 ...
最新文章
- VS2008中的“解决方案配置”和“解决方案平台”不见了(Release和Debug)的解决方法...
- Hadoop1.x之hdfs集群搭建
- bzoj 2251: [2010Beijing Wc]外星联络
- java inflaterinputstream_java.util.zip.InflaterInputStream.available()方法示例
- 2020云栖大会奖品大盘点(持续更新中)
- LeTax如何多行注释
- [leetcode] 题型整理之图论
- 让对话框不显示边框_微信消息“无边框”模式搭配这款壁纸,简直绝了
- 手游服务器验证,手游登录流程
- 提升Python程序性能的7个习惯
- python的N个小功能(更新文件)
- 通过AO连接多个EO并进行使用
- Linux查找树莓派ip地址,让树莓派“说”出自己的IP地址
- Android杂谈--ListView之ArrayAdapter的使用
- 物资申请php,危废企业申请经营许可证需满足的条件及申请程序
- linux 系统命令总结之ubuntu 系列命令 持续更新中~
- 数据结构 关键路径的个人理解
- CentOS安装jdk
- Reportlab 表格样式问题
- uboot_v2016 版本中fw_printenv的编译问题