使用python在图片中如何添加文字?
来源:互联网 发布:优化设计 编辑:程序博客网 时间:2024/05/16 00:52
本文和大家分享的主要是使用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支持使用自定义的字体文件,而且能够提供字体所占位置的详细信息,我们可以精确的确定文字所占的位置,在应用中特别有用。唯一的不足就是他不能改变字体的粗细(毕竟这用的是字体模板)。
实际应用中看来还要在这两种方法中择优使用。
来源:Myths的个人博客
- 使用python在图片中如何添加文字?
- 如何在图片中添加文字
- Python在图片中添加文字的两种操作
- ListActivity 的使用和在 ListView中添加图片文字
- ListActivity 的使用和在 ListView中添加图片文字
- 在TextView中添加图片和文字
- 在EditText中添加图片和文字
- matlab7如何在图中添加文字
- ios 关于如何消除在向cell中添加图片文字是时出现的重影问题
- word如何在图片中插入文字
- Android中ListActivity的使用和在ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- Android ListActivity的使用和在ListView中添加图片文字
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android之ListActivity的使用和在ListView中添加图片文字
- git--分支管理
- 以太坊被盗,回顾一下这几年发生的安全事件
- UVA-1583Digit Generator
- 数据库学习(三)----基础查询和关联查询
- Stones
- 使用python在图片中如何添加文字?
- RH124-第一节-走进Linux以及基本操作
- UVA-10935Throwing cards away I
- LeetCode 637 Average of Levels in Binary Tree(二叉树层序遍历)
- TypeError: newRawData.forEach is not a function问题解决
- 二叉树的深度以及判断平衡二叉树
- Segmentfault 内容精选
- 浅谈ZKW线段树
- 用递归写最小钱币数