如果你看的比较困惑的话,可以参考
Python 实现字符识别—Part1:关于PIL库的使用
http://www.jianshu.com/p/0a94d8ea2bf3
Python 实现字符识别—Part2:关于图形格式的基础知识和我的一个问题(欢迎大神来指点迷津)
http://www.jianshu.com/p/252ff113d1d0
Python 实现字符识别—Part3:关于完成验证码识别的前置操作,字符的提取和图像的分割
http://www.jianshu.com/p/4ff1559c1cf6
Python 实现字符识别—Part4 : 关于空间向量搜索算法paper的介绍
http://www.jianshu.com/p/b13b3905cc7d
Python 实现字符识别—Part5:关于使用空间向量搜索算法实现字符识别
http://www.jianshu.com/p/1905bf78f0bd
python用来出图像处理离不开一个很重要的库就是PIL。PIL的全称是Python Imaging Library。
由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
在命令行下直接通过pip安装:
$ pip install pillow
<br />
第一部分先写一下PIL库的一些常用的函数
- 输出图片大小
- 图片的缩放
- 图片的模糊
- 以不同图像格式的方式去创建图片(这个非常非常重要 当年数字图像处理这门课学的全tmd忘了!!!)
这个我特意总结了一下,回头再去总结上来 - 获得图片上的一个像素和设置图片上的一个点的像素
#coding:utf-8
from PIL import Image,ImageFilter
im=Image.open('2.jpg')
w,h=im.size
#size[0]是長
print im.size[0]
#size[1]是寬
print im.size[1]
print ('image size is : %s x %s'%(w,h))
#改變圖片的大小
print('resize image : %s x %s'%(w/2,h/2))
im.thumbnail((w//2,h//2))
im.save('thumbnail.jpg','jpeg')
#模糊
im2=im.filter(ImageFilter.BLUR)
im2.save('blur.jpg','jpeg')
#创建一个图片
#‘rgb’ 指的是图片的色彩模式;width,height,是长和宽;(255,255,255)是rgb颜色
image = Image.new('RGB', (width, height), (255, 255, 255))
#当然也可以以其他的方式去创建这个图片
im2=Image.new("P",im.size,255)
#获得图片上某一个点的像素
pix=im2.getpixel((y,x))
#设置像素
im2.putpixel((y,x),0)
<br />
生成字母验证码图片
下面是核心代码:
#创建图片
image = Image.new('RGB', (width, height), (255, 255, 255))
#绘制
draw = ImageDraw.Draw(image)
#填充图片里面的每一个像素
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
这是生成随机数字验证码的图片:
#cpoding:utf-8
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
# 随机字母:
def rndChar():
return chr(random.randint(65, 90))
# 随机颜色1:
def rndColor():
return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
# 随机颜色2:
def rndColor2():
return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255, 255))
# 创建Font对象:
#这一部分是字体库的路径,在ubuntu的路径,其他平台不适用
font = ImageFont.truetype('/usr/share/fonts/truetype/padauk/Padauk.ttf', 36)
# 创建Draw对象:
draw = ImageDraw.Draw(image)
# 填充每个像素:
for x in range(width):
for y in range(height):
draw.point((x, y), fill=rndColor())
# 输出文字:
for t in range(4):
draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')
参考资料:廖雪峰的python教程