原文地址:http://blog.csdn.net/icamera0/article/details/50785776
原文博主的博客中有相当多的python图像处理操作介绍,如有需要,可移驾原博主博客:http://blog.csdn.net/icamera0?viewmode=contents
(Newin 1.1.3)ImageOps模块包含了一些“ready-made”的图像处理操作。这个模块somewhatexperimental,大多数操作只工作在L和RGB图像上。
一、ImageOps模块的函数
1、 Autocontrast
定义:ImageOps.autocontrast(image, cutoff=0)? image
含义:最大图像对比度。这个函数计算一个输入图像的直方图,从这个直方图中去除最亮和最暗的百分之cutoff,然后重新映射图像,以便保留的最暗像素变为黑色,即0,最亮的变为白色,即255。
例子:
from PIL import Image, ImageOps
im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
im = ImageOps.autocontrast(im02, 20)
图像im如下:
2、 Colorize
定义:ImageOps.colorize(image, black, white)? image
含义:使得灰色图像变成彩色图像。变量black和white应该是RGB元组或者颜色名称。这个函数会计算出一个颜色值,使得源图像中的所有黑色变成第一种颜色,所有白色变成第二种颜色。变量image的模式必须为“L”。
例子:
from PIL import Image, ImageOps
im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
r,g,b = im02.split()
print r.mode
>>> 'L'
im_r = ImageOps.colorize(r, "green", "blue")
im_b = ImageOps.colorize(b, (255, 0, 0), (0, 255, 0))
im_g = ImageOps.colorize(g, (255, 0, 0), "blue")
图像im_g如下:
图像im_b如下:
3、 Crop
定义:ImageOps.crop(image, border=0)? image
含义:从图像的四个边去掉变量border定义的四元组对应的行/列。这个函数对所有图像模式有效。
例子:
>>> from PIL import Image, ImageOps
>>> im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im0 = ImageOps.crop(im02, (0,0,400,300))
>>> im1 = ImageOps.crop(im02, (100,100,400,300))
>>> im2 = ImageOps.crop(im02, (200,100,400,300))
>>> im02.size
(1024, 768)
>>> im0.size
(624, 468)
>>> im1.size
(524, 368)
>>> im2.size
(424, 368)
图像im1如下:
图像im2如下:
4、 Deform
定义:ImageOps.deform(image, deformer, filter=Image.BILINEAR)? image
含义:使用给定的变形器对象改变图像。变形器需要提供一个getmesh()方法,它返回一个MESH列表适应图像transform方法。
例子:
暂时不清楚如何使用该函数。
5、 Equalize
定义:ImageOps.equalize(image)? image
含义:均衡图像的直方图。该函数使用一个非线性映射到输入图像,为了产生灰色值均匀分布的输出图像。
例子:
>>> from PIL importImage, ImageOps
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im =ImageOps.equalize(im02)
6、 Expand
定义:ImageOps.expand(image, border=0, fill=0)? image
含义:
例子:
>>> from PIL import Image,ImageOps
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im =ImageOps.expand(im02, (50,100,200,300), fill="red")
>>> im.size
(1274, 1168)
7、 Fit
定义:ImageOps.fit(image, size, method, bleed, centering)? image
含义:返回一个指定大小的裁剪过的图像。该图像被裁剪到指定的宽高比和尺寸。变量size是要求的输出尺寸,以像素为单位,是一个(宽,高)元组。
变量method是用于重采样的方法。默认值为Image.NEAREST。
变量bleed允许用户去掉图像的边界(图像四个边界)。这个值是一个百分比数(0.01表示百分之一)。默认值是0(没有边界)。
变量centering用于控制裁剪位置。(0.5,0.5)是裁剪中心(例如,如果裁剪宽度,裁掉左侧50%(右侧50%),顶/底一样)。
(0.0,0.0)将从左上角开始裁剪(例如,如果裁剪宽度,将从右边裁剪掉所要裁剪的部分;如果裁剪高度,将从底部裁剪掉所要裁剪的部分)。
(1.0,0.0)将从左下角开始裁剪。(如果裁剪宽度,将从左边裁剪掉所要裁剪的部分;如果裁剪高度,将从底部裁剪掉所要裁剪的部分)
例子:
>>> from PIL import Image, ImageOps
>>> im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im0 = ImageOps.fit(im02, (500,300), Image.BICUBIC, 0.1, (0.0,0.0))
>>> im1 = ImageOps.fit(im02, (500,300), Image.BICUBIC, 0.1, (1.0,1.0))
>>> im2 = ImageOps.fit(im02, (500,300), Image.BICUBIC, 0.1, (0.0,1.0))
>>> im3 = ImageOps.fit(im02, (500,300), Image.BICUBIC, 0.1, (1.0,0.0))
图像im1如下:
图像im2如下:
图像im3如下:
8、 Flip
定义:ImageOps.flip(image)? image
含义:输出图像为输入图像在垂直方向的镜像(顶部跟底部对调)。
例子:
>>> from PIL importImage, ImageOps
>>> im02= Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= ImageOps.flip(im02)
9、 Grayscale
定义:ImageOps.grayscale(image)? image
含义:将输入图像转换为灰色图像。
例子:
>>>from PIL import Image, ImageOps
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= ImageOps.grayscale(im02)
>>>im.mode
'L'
10、Invert
定义:ImageOps.invert(image)? image
含义:将输入图像转换为反色图像。
例子:
>>>from PIL import Image, ImageOps
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= ImageOps.invert(im02)
11、Mirror
定义:ImageOps.mirror(image)? image
含义:输出图像为输入图像水平方向的镜像。
例子:
>>>from PIL import Image, ImageOps
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= ImageOps.mirror(im02)
12、Posterize
定义:ImageOps.posterize(image,bits)? image
含义:将每个颜色通道上变量bits对应的低(8-bits)个bit置0。变量bits的取值范围为[0,8]。
例子:
>>>from PIL import Image, ImageOps
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>>im02.getpixel((0,0))
(124, 127, 108)
>>> im2= ImageOps.posterize(im02, 2)
>>>im2.getpixel((0,0))
(64, 64, 64)
>>> im3= ImageOps.posterize(im02, 3)
>>>im3.getpixel((0,0))
(96, 96, 96)
>>> im5= ImageOps.posterize(im02, 5)
>>>im5.getpixel((0,0))
(120, 120, 104)
13、Solarize
定义:ImageOps.solarize(image,threshold=128)? image
含义:在指定的阈值范围内,反转所有的像素点。
例子:
>>>from PIL import Image, ImageOps
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>>im02.getpixel((0,0))
(124, 127, 108)
>>> im0= ImageOps.solarize(im02, 100)
>>> im1= ImageOps.solarize(im02, 200)
>>> im0.getpixel((0,0))
(131, 128, 147)
>>> im1.getpixel((0,0))
(124, 127, 108)
图像im1如下: