Python计算机视觉编程1.1  PIL:Python图像处理类库_Python计算机视觉编程1.1  PIL:Python图像处理类库试读-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Python计算机视觉编程 > 1.1  PIL:Python图像处理类库

Python计算机视觉编程——1.1  PIL:Python图像处理类库

本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的Python 工具包,并介绍用于读取图像、图像转换和缩放、计算导数、画图和保存结果等的基本工具。这些工具的使用将贯穿本书的剩余章节。 1.1  PIL:Python图像处理类库 PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能, 以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。PIL 是免费的,可以从http://www.pythonware.com/products/pil/ 下载。 利用PIL 中的函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。PIL 中最重要的模块为Image。要读取一幅图像,可以使用: from PIL import Image pil_im = Image.open('empire.jpg') 上述代码的返回值pil_im 是一个PIL 图像对象。 图像的颜色转换可以使用convert() 方法来实现。要读取一幅图像,并将其转换成灰度图像,只需要加上convert('L'),如下所示: pil_im = Image.open('empire.jpg').convert('L') 在PIL 文档中有一些例子, 参见http://www.pythonware.com/library/pil/handbook/ index.htm。这些例子的输出结果如图1-1 所示。 图1-1:用PIL 处理图像的例子 1.1.1  转换图像格式 通过save() 方法,PIL 可以将图像保存成多种格式的文件。下面的例子从文件名列表(filelist)中读取所有的图像文件,并转换成JPEG 格式: from PIL import Image import os for infile in filelist: outfile = os.path.splitext(infile)[0] + ".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 格式;如果转换失败, 它会在控制台输出一条报告失败的消息。 本书会处理大量图像列表。下面将创建一个包含文件夹中所有图像文件的文件名列表。首先新建一个文件,命名为imtools.py,来存储一些经常使用的图像操作,然后将下面的函数添加进去: import os def get_imlist(path): """ 返回目录中所有JPG 图像的文件名列表""" return [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')] 现在,回到PIL。 1.1.2  创建缩略图 使用PIL 可以很方便地创建图像的缩略图。thumbnail() 方法接受一个元组参数(该参数指定生成缩略图的大小),然后将图像转换成符合元组参数指定大小的缩略图。例如,创建最长边为128 像素的缩略图,可以使用下列命令: pil_im.thumbnail((128,128)) 1.1.3  复制和粘贴图像区域 使用crop() 方法可以从一幅图像中裁剪指定区域: box = (100,100,400,400) region = pil_im.crop(box) 该区域使用四元组来指定。四元组的坐标依次是(左,上,右,下)。PIL 中指定坐标系的左上角坐标为(0,0)。我们可以旋转上面代码中获取的区域,然后使用paste() 方法将该区域放回去,具体实现如下: region = region.transpose(Image.ROTATE_180) pil_im.paste(region,box) 1.1.4  调整尺寸和旋转 要调整一幅图像的尺寸,我们可以调用resize() 方法。该方法的参数是一个元组, 用来指定新图像的大小: out = pil_im.resize((128,128)) 要旋转一幅图像,可以使用逆时针方式表示旋转角度,然后调用rotate() 方法: out = pil_im.rotate(45) 上述例子的输出结果如图1-1 所示。最左端是原始图像,然后是灰度图像、粘贴有旋转后裁剪图像的原始图像,最后是缩略图。

展开全文

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

《Python计算机视觉编程》其他试读目录

• 1.1  PIL:Python图像处理类库 [当前]
• 1.2  Matplotlib
• 1.3  NumPy
• 1.4  SciPy
• 1.5  高级示例:图像去噪