您的位置:

python的pil工具包入门(python安装pil模块)

本文目录一览:

python中pil如何导入?

PIL是python的第三方图像处理库,我们可以值cmd使用pip install pillow命令安装pil库,下面我们就来看一下如何导入pil库。

python中可以使用import导入pil模块:

主要有以下两种导入方法:

import 模块名1 [as 别名1], 模块名2 [as 别名2],…:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

更多Python知识请关注Python自学网。

python最佳入门教程(1): python的安装

本教程基于python3.x, 是针对初学者的一系列python入门教程,在知乎上常有人问我计算机该怎么学,如何自学编程,笔者也是通过自学编程而进入IT这一行业的,回顾入行的这几年,从音视频流媒体辗转到人工智能深度学习,机器视觉,我是下了不少苦心的,对于如何学习有自己的一套理论和实践方法,很多人自言学编程不得其门,把学不会归咎于天分,其实芸芸众生,智力无别,你现在所看到的是技术大牛们一个个超凡绝顶(然知此绝顶非彼绝顶),看不到的是曾经的他们,也在每个昼夜里用心苦学。再者学一门技术,需要勤学刻苦,是需要讲究方法和基础的,方法对了就事半功倍,所谓的天才也无不是建立在扎实的基础之上。

在windows中安装python

首先打开python官网,点击页面downloads导航按钮,下载windows最新的基于web安装的安装器,右键以管理员身份运行 安装包,会出现如下界面:

将Add Python 3.7 to PATH 进行勾选,勾选此项的目的在于将python解释器加入系统环境变量,则在后续的python开发中可直接在windows 命令行中执行python脚本。所谓的环境变量是系统运行环境的一系列参数,比如这里的系统环境变量是PATH,PATH保存了与路径相关的参数,系统在路径查找中,会对PATH保存的路径进行搜索。

点击install Now按钮执行python的安装

打开windows命令行界面(按windows键输入cmd命令),输入python -V,出现python版本的相关输出,即表示安装成功。

在Linux系统中安装python

笔者的系统是CentOS, Linux系统默认有安装python,但是其版本是2.x,在这里笔者以源码安装的形式来安装python 3.X。首先进入python源码包页面 点击下载最新的gzip格式的python源码包,上传到服务器然后进行解压,解压后的目录结构如下图所示:

Linux中的configure与make

configure是Linux中的脚本配置工具,用来对源码的当前安装环境进行检测,若检测无误,会在当前目录生成一个供源码编译的Makefile脚本文件。

make是Linux系统下的编译安装工具,用来解释执行makefile文件中的脚本命令,编译命令。

现在我们开始编译安装python

(1) 在当前目录执行./configure(2) 输入 make sudo make install

若无指定安装目录,python会被默认安装在/usr/local目录中, 读者可以执行./configure --prefix=“你自定义的安装目录”来配置安装路径。安装完毕以后进入/usr/local/bin目录,输入 “python3.x -V” (这里的python3.x为你所安装的python版本),若出现与python版本的相关输出,即表示安装成功。

为安装的python设置软链接

安装的python可以以绝对路径的方式来执行,每次敲一大段路径来执行python未免麻烦,通常我们会给安装的python设置软链接,这里的软链接类似于windows的快捷方式。

输入以下命令来给python设置软链接,笔者安装的版本是python3.7, pip是python的包管理工具,会在教程的后续章节中进行详细讲解。

ln -s /usr/bin/python3 /usr/local/bin/python3.7 # 表示设置python3 为 /usr/local/bin/python3.7的快捷方式ln -s /usr/bin/pip3 /usr/local/bin/pip3.7 # 表示设置pip3 为 /usr/local/bin/pip3.7的快捷方式

python如何安装pil库

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow。

安装Python时已经把pip3也备好了,可以直接使用pip3安装PIL

命令行:pip3 install pillow

注意:

1.PIL安装包名字的pillow

2.使用pip3命令时,是要在pip3.exe所在路径下才能执行。一般pip3.exe是在python安装目录下的Script文件夹中。

更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python如何安装pil库的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

Python:这有可能是最详细的PIL库基本概念文章了

PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance模块、ImageFile模块、ImageFileIO模块、ImageFilter模块、ImageFont模块、ImageGrab模块、ImageOps模块、ImagePath模块、ImageSequence模块、ImageStat模块、ImageTk模块、ImageWin模块、PSDraw模块

啊啊啊啊怎么这么多模块啊~~~!!!!

别担心我为你一一讲解

Image模块提供了一个相同名称的类,即image类,用于表示PIL图像。

Image模块是PIL中最重要的模块 ,比如创建、打开、显示、保存图像等功能,合成、裁剪、滤波等功能,获取图像属性功能,如图像直方图、通道数等。

Image模块的使用如下:

ImageChops模块包含一些算术图形操作,这些操作可用于诸多目的,比如图像特效,图像组合,算法绘图等等,通道操作只用于8位图像。

ImageChops模块的使用如下:

由于图像im_dup是im的复制过来的,所以它们的差为0,图像im_diff显示时为黑图。

ImageCrackCode模块允许用户检测和测量图像的各种特性。 这个模块只存在于PIL Plus包中。

因为我目前安装的PIL中没有包含这个模块。所以就不详细介绍了

ImageDraw模块为image对象提供了基本的图形处理功能。 例如,它可以创建新图像,注释或润饰已存在图像,为web应用实时产生各种图形。

ImageDraw模块的使用如下:

在del draw前后显示出来的图像im是完全一样的,都是在原有图像上画了两条对角线。

原谅我的报错

ImageEnhance模块包括一些用于图像增强的类。它们分别为 Color类、Brightness类、Contrast类和Sharpness类。

ImageEnhance模块的使用如下:

图像im0的亮度为图像im的一半。

ImageFile模块为图像打开和保存功能提供了相关支持功能。另外,它提供了一个Parser类,这个类可以一块一块地对一张图像进行解码(例如,网络联接中接收一张图像)。这个类的接口与标准的sgmllib和xmllib模块的接口一样。

ImageFile模块的使用如下:

因为所打开图像大小大于1024个byte,所以报错:图像不完整。

所以大家想看的可以自行去找一个小一点的图看一下

ImageFileIO模块用于从一个socket或者其他流设备中读取一张图像。 不赞成使用这个模块。 在新的code中将使用ImageFile模块的Parser类来代替它。

ImageFilter模块包括各种滤波器的预定义集合,与Image类的filter方法一起使用。该模块包含这些图像增强的滤器:BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,EMBOSS,FIND_EDGES,SMOOTH,SMOOTH_MORE和SHARPEN。

ImageFilter模块的使用如下:

ImageFont模块定义了一个同名的类,即ImageFont类。这个类的实例中存储着bitmap字体,需要与ImageDraw类的text方法一起使用。

PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式。

PIL Plus包中才会支持矢量字体。

ImageGrab模块用于将屏幕上的内容拷贝到一个PIL图像内存中。 当前的版本只在windows操作系统上可以工作。

ImageGrab模块的使用如下:

图像im显示出笔记本当前的窗口内容,就是类似于截图的工具

ImageOps模块包括一些“ready-made”图像处理操作。 它可以完成直方图均衡、裁剪、量化、镜像等操作 。大多数操作只工作在L和RGB图像上。

ImageOps模块的使用如下:

图像im_flip为图像im垂直方向的镜像。

ImagePath模块用于存储和操作二维向量数据。Path对象将被传递到ImageDraw模块的方法中。

ImagePath模块的使用如下:

ImageSequence模块包括一个wrapper类,它为图像序列中每一帧提供了迭代器。

ImageSequence模块的使用如下:

后面两次show()函数调用,分别显示第1张和第11张图像。

ImageStat模块计算一张图像或者一张图像的一个区域的全局统计值。

ImageStat模块的使用如下:

ImageTk模块用于创建和修改BitmapImage和PhotoImage对象中的Tkinter。

ImageTk模块的使用如下:

这个是我一直不太懂的有没有大佬能帮我解决一下在线等~急!

PSDraw模块为Postscript打印机提供基本的打印支持。用户可以通过这个模块打印字体,图形和图像。

PIL中所涉及的基本概念有如下几个: 通道(bands)、模式(mode)、尺寸(size)、坐标系统(coordinate system)、调色板(palette)、信息(info)和滤波器(filters)。

每张图片都是由一个或者多个数据通道构成。PIL允许在单张图片中合成相同维数和深度的多个通道。

以RGB图像为例,每张图片都是由三个数据通道构成,分别为R、G和B通道。而对于灰度图像,则只有一个通道。

对于一张图片的通道数量和名称,可以通过getbands()方法来获取。getbands()方法是Image模块的方法,它会返回一个字符串元组(tuple)。该元组将包括每一个通道的名称。

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

getbands()方法的使用如下:

图像的模式定义了图像的类型和像素的位宽。当前支持如下模式:

1:1位像素,表示黑和白,但是存储的时候每个像素存储为8bit。

L:8位像素,表示黑和白。

P:8位像素,使用调色板映射到其他模式。

I:32位整型像素。

F:32位浮点型像素。

RGB:3x8位像素,为真彩色。

RGBA:4x8位像素,有透明通道的真彩色。

CMYK:4x8位像素,颜色分离。

YCbCr:3x8位像素,彩色视频格式。

PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。

可以通过mode属性读取图像的模式。其返回值是包括上述模式的字符串。

mode 属性 的使用如下:

通过size属性可以获取图片的尺寸。这是一个二元组,包含水平和垂直方向上的像素数。

mode属性的使用如下:

PIL使用笛卡尔像素坐标系统,坐标(0,0)位于左上角。注意:坐标值表示像素的角;位于坐标(0,0)处的像素的中心实际上位于(0.5,0.5)。

坐标经常用于二元组(x,y)。长方形则表示为四元组,前面是左上角坐标。例如:一个覆盖800x600的像素图像的长方形表示为(0,0,800,600)。

调色板模式 ("P")使用一个颜色调色板为每个像素定义具体的颜色值

使用info属性可以为一张图片添加一些辅助信息。这个是字典对象。加载和保存图像文件时,多少信息需要处理取决于文件格式。

info属性的使用如下:

对于将多个输入像素映射为一个输出像素的几何操作,PIL提供了4个不同的采样滤波器:

NEAREST:最近滤波。 从输入图像中选取最近的像素作为输出像素。它忽略了所有其他的像素。

BILINEAR:双线性滤波。 在输入图像的2x2矩阵上进行线性插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。

BICUBIC:双立方滤波。 在输入图像的4x4矩阵上进行立方插值。注意:PIL的当前版本,做下采样时该滤波器使用了固定输入模板。

ANTIALIAS:平滑滤波。 这是PIL 1.1.3版本中新的滤波器。对所有可以影响输出像素的输入像素进行高质量的重采样滤波,以计算输出像素值。在当前的PIL版本中,这个滤波器只用于改变尺寸和缩略图方法。

注意:在当前的PIL版本中,ANTIALIAS滤波器是下采样 (例如,将一个大的图像转换为小图) 时唯一正确的滤波器。 BILIEAR和BICUBIC滤波器使用固定的输入模板 ,用于固定比例的几何变换和上采样是最好的。Image模块中的方法resize()和thumbnail()用到了滤波器。

resize()方法的定义为:resize(size, filter=None)= image

resize()方法的使用如下:

对参数filter不赋值的话,resize()方法默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:

thumbnail ()方法的定义为:im.thumbnail(size, filter=None)

thumbnail ()方法的使用如下:

这里需要说明的是,方法thumbnail()需要保持宽高比,对于size=(200,200)的输入参数,其最终的缩略图尺寸为(182, 200)。

对参数filter不赋值的话,方法thumbnail()默认使用NEAREST滤波器。如果要使用其他滤波器可以通过下面的方法来实现:

python的pillow库怎么使用

Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

1)使用 Image 类

PIL最重要的类是 Image class, 你可以通过多种方法创建这个类的实例;你可以从文件加载图像,或者处理其他图像, 或者从 scratch 创建。

要从文件加载图像,可以使用open( )函数,在Image模块中:

[python] view plain copy

 from PIL import Image

 im = Image.open("E:/photoshop/1.jpg")

加载成功后,将返回一个Image对象,可以通过使用示例属性查看文件内容:

[python] view plain copy

 print(im.format, im.size, im.mode)

('JPEG', (600, 351), 'RGB')

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。

如果文件打开错误,返回 IOError 错误。

只要你有了 Image 类的实例,你就可以通过类的方法处理图像。比如,下列方法可以显示图像:

[python] view plain copy

im.show()

2)读写图像

PIL 模块支持大量图片格式。使用在 Image 模块的 open() 函数从磁盘读取文件。你不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。要保存文件,使用 Image 类的 save() 方法。保存文件的时候文件名变得重要了。除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存。

加载文件,并转化为png格式:

[python] view plain copy

"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys.argv[1:]:

f,e = os.path.splitext(infile)

outfile = f +".png"

if infile != outfile:

try:

Image.open(infile).save(outfile)

except IOError:

print("Cannot convert", infile)

save() 方法的第二个参数可以指定文件格式。

3)创建缩略图

缩略图是网络开发或图像软件预览常用的一种基本技术,使用Python的Pillow图像库可以很方便的建立缩略图,如下:

[python] view plain copy

# create thumbnail

size = (128,128)

for infile in glob.glob("E:/photoshop/*.jpg"):

f, ext = os.path.splitext(infile)

img = Image.open(infile)

img.thumbnail(size,Image.ANTIALIAS)

img.save(f+".thumbnail","JPEG")

上段代码对photoshop下的jpg图像文件全部创建缩略图,并保存,glob模块是一种智能化的文件名匹配技术,在批图像处理中经常会用到。

注意:Pillow库不会直接解码或者加载图像栅格数据。当你打开一个文件,只会读取文件头信息用来确定格式,颜色模式,大小等等,文件的剩余部分不会主动处理。这意味着打开一个图像文件的操作十分快速,跟图片大小和压缩方式无关。

4)图像的剪切、粘贴与合并操作

Image 类包含的方法允许你操作图像部分选区,PIL.Image.Image.crop 方法获取图像的一个子矩形选区,如:

[python] view plain copy

# crop, paste and merge

im = Image.open("E:/photoshop/lena.jpg")

box = (100,100,300,300)

region = im.crop(box)

矩形选区有一个4元元组定义,分别表示左、上、右、下的坐标。这个库以左上角为坐标原点,单位是px,所以上诉代码复制了一个 200x200 pixels 的矩形选区。这个选区现在可以被处理并且粘贴到原图。

[python] view plain copy

region = region.transpose(Image.ROTATE_180)

im.paste(region, box)

当你粘贴矩形选区的时候必须保证尺寸一致。此外,矩形选区不能在图像外。然而你不必保证矩形选区和原图的颜色模式一致,因为矩形选区会被自动转换颜色。

5)分离和合并颜色通道

对于多通道图像,有时候在处理时希望能够分别对每个通道处理,处理完成后重新合成多通道,在Pillow中,很简单,如下:

[python] view plain copy

r,g,b = im.split()

im = Image.merge("RGB", (r,g,b))

对于split( )函数,如果是单通道的,则返回其本身,否则,返回各个通道。

6)几何变换

对图像进行几何变换是一种基本处理,在Pillow中包括resize( )和rotate( ),如用法如下:

[python] view plain copy

out = im.resize((128,128))

out = im.rotate(45)  # degree conter-clockwise

其中,resize( )函数的参数是一个新图像大小的元祖,而rotate( )则需要输入顺时针的旋转角度。在Pillow中,对于一些常见的旋转作了专门的定义:

[python] view plain copy

out = im.transpose(Image.FLIP_LEFT_RIGHT)

out = im.transpose(Image.FLIP_TOP_BOTTOM)

out = im.transpose(Image.ROTATE_90)

out = im.transpose(Image.ROTATE_180)

out = im.transpose(Image.ROTATE_270)

7)颜色空间变换

在处理图像时,根据需要进行颜色空间的转换,如将彩色转换为灰度:

[python] view plain copy

cmyk = im.convert("CMYK")

gray = im.convert("L")

8)图像滤波

图像滤波在ImageFilter 模块中,在该模块中,预先定义了很多增强滤波器,可以通过filter( )函数使用,预定义滤波器包括:

BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值滤波,CONTOUR找轮廓,FIND_EDGES边缘检测,使用该模块时,需先导入,使用方法如下:

[python] view plain copy

from PIL import ImageFilter

imgF = Image.open("E:/photoshop/lena.jpg")

outF = imgF.filter(ImageFilter.DETAIL)

conF = imgF.filter(ImageFilter.CONTOUR)

edgeF = imgF.filter(ImageFilter.FIND_EDGES)

imgF.show()

outF.show()

conF.show()

edgeF.show()

除此以外,ImageFilter模块还包括一些扩展性强的滤波器:

class PIL.ImageFilter.GaussianBlur(radius=2)

Gaussian blur filter.

参数:

radius – Blur radius.    

class PIL.ImageFilter.UnsharpMask(radius=2, percent=150, threshold=3)

Unsharp mask filter.

See Wikipedia’s entry on digital unsharp masking for an explanation of the parameters.

class PIL.ImageFilter.Kernel(size, kernel, scale=None, offset=0)

Create a convolution kernel. The current version only supports 3x3 and 5x5 integer and floating point kernels.

In the current version, kernels can only be applied to “L” and “RGB” images.

参数:

size – Kernel size, given as (width, height). In the current version, this must be (3,3) or (5,5).

kernel – A sequence containing kernel weights.

scale – Scale factor. If given, the result for each pixel is divided by this value. the default is the sum of the kernel weights.

offset – Offset. If given, this value is added to the result, after it has been divided by the scale factor.

class PIL.ImageFilter.RankFilter(size, rank)

Create a rank filter. The rank filter sorts all pixels in a window of the given size, and returns therank‘th value.

参数:

size – The kernel size, in pixels.

rank – What pixel value to pick. Use 0 for a min filter, size * size / 2 for a median filter, size * size - 1 for a max filter, etc.

class PIL.ImageFilter.MedianFilter(size=3)

Create a median filter. Picks the median pixel value in a window with the given size.

参数:

size – The kernel size, in pixels.    

class PIL.ImageFilter.MinFilter(size=3)

Create a min filter. Picks the lowest pixel value in a window with the given size.

参数:

size – The kernel size, in pixels.    

class PIL.ImageFilter.MaxFilter(size=3)

Create a max filter. Picks the largest pixel value in a window with the given size.

参数:

size – The kernel size, in pixels.    

class PIL.ImageFilter.ModeFilter(size=3)

Create a mode filter. Picks the most frequent pixel value in a box with the given size. Pixel values that occur only once or twice are ignored; if no pixel value occurs more than twice, the original pixel value is preserved.

参数:

size – The kernel size, in pixels.    

更多详细内容可以参考:PIL/ImageFilter

9)图像增强

图像增强也是图像预处理中的一个基本技术,Pillow中的图像增强函数主要在ImageEnhance模块下,通过该模块可以调节图像的颜色、对比度和饱和度和锐化等:

[python] view plain copy

from PIL import ImageEnhance

imgE = Image.open("E:/photoshop/lena.jpg")

imgEH = ImageEnhance.Contrast(imgE)

imgEH.enhance(1.3).show("30% more contrast")

图像增强:

class PIL.ImageEnhance.Color(image)

Adjust image color balance.

This class can be used to adjust the colour balance of an image, in a manner similar to the controls on a colour TV set. An enhancement factor of 0.0 gives a black and white image. A factor of 1.0 gives the original image.

class PIL.ImageEnhance.Contrast(image)

Adjust image contrast.

This class can be used to control the contrast of an image, similar to the contrast control on a TV set. An enhancement factor of 0.0 gives a solid grey image. A factor of 1.0 gives the original image.

class PIL.ImageEnhance.Brightness(image)

Adjust image brightness.

This class can be used to control the brighntess of an image. An enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the original image.

class PIL.ImageEnhance.Sharpness(image)

Adjust image sharpness.

This class can be used to adjust the sharpness of an image. An enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the original image, and a factor of 2.0 gives a sharpened image.

图像增强的详细内容可以参考:PIL/ImageEnhance

除了以上介绍的内容外,Pillow还有很多强大的功能:

PIL.Image.alpha_composite(im1, im2)

PIL.Image.blend(im1, im2, alpha)

PIL.Image.composite(image1, image2, mask)

PIL.Image.eval(image, *args)

PIL.Image.fromarray(obj, mode=None)

PIL.Image.frombuffer(mode, size, data, decoder_name='raw', *args)