您的位置:首页 > 编程语言 > Python开发

1-python图像处理之PIL,pylab

2016-12-30 21:34 381 查看
python计算视觉学习基础,PIL和pylab类库的简单使用,

一. 读图与显示

1.使用pylab中的 imread() 读图

img = imread('图片路径')


或者使用PIL中Image的open()方法

img = Image.open('图片路径')


2.显示使用pylab中的 imshow()

imshow(img)


或者 使用Image中的类(和上面不一样)

img.show()


测试用例:

#coding=utf-8
#
# 图片的读取和显示
from PIL import Image
import pylab as plb
#读图1
img = Image.open('test1.jpg')
#使用默认图片打开软件打开
img.show()

#灰度化
grayimg = img.convert('L')
#注意:每次只能显示一张图片,需要关闭上一张
grayimg.show()
#使用python专用的打开图片的软件
plb.imshow(img)
#防止一闪而过
plb.show()


二. 新建窗口

使用 pylab 中的 figure()

试了下,貌似只能和imshow(img)一块使用(python专用的图片查看器)

三. 将图片转存:

PIL中提供save()方法用来存储多种格式的文件,

测试用例:

#coding=utf-8
from PIL import Image
import os
#可同时转存多张
filelist = ['F:/myPythonWork/PIL/test1.jpg'];
for infile in filelist:
outfile = 'outfile' + ".jpg"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print "cannot convert", infile


PIL 的open() 函数用于创建PIL 图像对象,save() 方法用于保存图像到具有指定文

件名的文件。除了后缀变为“.jpg”,上述代码的新文件名和原文件名相同。PIL 是

个足够智能的类库,可以根据文件扩展名来判定图像的格式。PIL 函数会进行简单

的检查,如果文件不是JPEG 格式,会自动将其转换成JPEG 格式;如果转换失败,

它会在控制台输出一条报告失败的消息。

图片文件的操作,返回目录下指定文件类型文件名的列表

import os
def get_imlist(path):
""" 返回目录中所有JPG 图像的文件名列表"""
return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.类型')]


四. 创建缩略图

PIL提供了 thumbnail((128,128))方法,可以直接使用图片对象进行调用

#将图片的大小转化为100*100(单位貌似是像素)
img.thumbnail((100,100))


五.复制和粘贴图片的区域

PIL中提供了crop()方法可以从一张图片中裁剪某一区域

#四个元素的元组,分别是左上右下(左上,右下)
box = (100,100,400,400)
region = pil_im.crop(box)


然后使用可以使用 paste() 方法将该区域放回去

#旋转180度
region = region.transpose(Image.ROTATE_180)
#放回原处
pil_im.paste(region,box)


六. 调整尺寸和旋转

1.调增尺寸:PIL中提供了 resize() 方法

#将图片 pil_im的大小设为 100*100
out = pil_im.resize((100,100))


2.旋转:

使用rotate()方法,注意:逆时针方式表示旋转角度

#逆时针旋转45度
out = pil_im.rotate(45)


测试案例:

#coding=utf-8
#使用PIL类库中常见的方法制作一个小案例
#
#读取一张图片,将图片中一部分进行旋转,
#然后整体旋转,最后显示并存储在C盘中
#

from PIL import Image
import pylab as plb
import os

#存储图片
def saveImg(img,type):

try:
img.save('C:/test/testr.' + type)
except IOError:
return False
return True

img = Image.open('test1.jpg')
#转化为二值图像
grayImg = img.convert('L')
'''
#显示 默认图片浏览器
grayImg.show()
'''
#设置缩略图
# imgchange1 = grayImg.thumbnail((100,100))
box = (20,20,130,130)
imgchange2 = img.crop(box)
imgchange2 = imgchange2.transpose(Image.ROTATE_180)
grayImg.paste(imgchange2,box)#注意返回值不是图片或者矩阵类型
#显示为灰色 注意:不加的话会显示伪彩色,一种特殊的彩色
plb.gray()
#显示 python专用图片浏览器
plb.figure('demo')  #设置窗口信息
plb.title('demo1')
plb.imshow(grayImg)
#防止一闪而过
plb.show()
if saveImg(grayImg,'jpg'):
print 'ok'


案例结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息