Python PIL图像处理:类型、通道与matplotlib应用

5星 · 超过95%的资源 5 下载量 198 浏览量 更新于2024-08-31 收藏 91KB PDF 举报
Python PIL图像处理是一篇介绍如何使用Python的Pillow库进行图像处理的文章。Pillow是基于Python Imaging Library (PIL) 的更新版本,PIL主要支持光栅图片,即由像素数据构成的位图文件。PIL的特点是可以处理多种类型的图片,包括常见的JPEG、PNG、BMP等,且它采取左上角为原点(0,0)的坐标系统。 文章首先指出,使用`Image`模块从PIL读取图片会得到PIL类型的图像对象,其大小表示为宽度和高度,例如`Img.read()`的结果形状为(width, height)。另一方面,`skimage.io.imread()`函数则返回numpy数组,其形状为(height, width, channel),这是因为skimage通常处理的数据格式是通道、高度和宽度的顺序,这与Caffe等深度学习框架的要求相匹配,Caffe期望的图片数据格式是(channel, height, width)。因此,在使用Caffe时,可能需要通过`transformer.set_transpose('data', (2, 0, 1))`这样的操作来调整数据格式。 获取图片像素值的方式也有所不同:`Img.getpixel((w, h))`直接返回指定位置(w, h)的三个通道值,而对于skimage读取的图片,需要通过索引,如`img_file2[0][0]`,但要注意理解其通道顺序。然而,`img_file2`实际上代表的是numpy数组,而非直观的(channel, height, width)形式。 文章还提到了在PIL中查看图片信息的方法,可以使用Pillow提供的功能,尽管PIL不再活跃更新,但Pillow继承了其大部分功能。对于数字图片处理,Pillow提供了丰富的接口来操作像素数据和图像属性。 此外,文中提到了两种显示图片的方式:一是使用操作系统内置的图片浏览器,通过`Image.show()`实现;二是使用matplotlib库进行专业级的图片绘制,这涉及到创建`Figure`对象,设置标题、子图(subplot)等,matplotlib可以提供更多的图形定制选项,尽管稍微复杂,但推荐这种方式以获得更大的灵活性和控制权。默认情况下,matplotlib会显示轴,如果不需要,可以通过相应参数关闭。 这篇文章涵盖了PIL库的基本图像操作,包括图片类型、通道处理、坐标系统、图片读取与显示,以及如何使用matplotlib进行高级图像展示和处理。对于任何需要在Python中进行图像操作的开发者来说,这些都是重要的基础知识。